Arbeiten mit variablen langen Argumentlisten (Update)

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Das ende der Parameter kann man nur mit NULL erkennen oder ein Parameter übergeben, wie im Beispiel, mit der Anzahl von Parameter.

Man könnte auch den valistHelper so umschreiben das alle Parameter als Pointer übergeben werden müssen. Somit ist es dann möglich zu prüfen ob noch ein Parameter folgt.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

mk-soft hat geschrieben:Man könnte auch den valistHelper so umschreiben das alle Parameter als Pointer übergeben werden müssen. Somit ist es dann möglich zu prüfen ob noch ein Parameter folgt.
Das wäre doch sinnvoll. Das ich Integer und kleiner so übergeben kann, ist
doch kein Vorteil, besser alles als Pointer, da kann man nichts verkehrt
machen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Update v1.05

Alle Argumente als Pointer übergeben

Neue Funktionen:
- va_exist(zeiger)
- va_arg_integer(zeiger)

Siehe Beispiel.

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Little John

Beitrag von Little John »

Hallo,

das ist ja interessant!
Funktioniert Deine Methode auch, wenn die Parameter in Registern übergeben werden, so wie Thomas es hier geschrieben hat?

Gruß, Little John
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Little John hat geschrieben:Hallo,

das ist ja interessant!
Funktioniert Deine Methode auch, wenn die Parameter in Registern übergeben werden, so wie Thomas es hier geschrieben hat?

Gruß, Little John
Es werden immer Pointer übergeben, keine Strings!
Hör auf zu Saufen :lol:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Little John

Beitrag von Little John »

ts-soft hat geschrieben:Es werden immer Pointer übergeben, keine Strings!
Dann müsste ja meine einfache Methode aus dem anderen Thread mit Pointern auch gehen. :-)

Gruß, Little John
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Little John hat geschrieben:Dann müsste ja meine einfache Methode aus dem anderen Thread mit Pointern auch gehen. :-)

Gruß, Little John
Na klar, Pointer haben immer den Abstand von SizeOf(Integer), aber was
soll das bringen?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Little John

Beitrag von Little John »

ts-soft hat geschrieben:
Little John hat geschrieben:Dann müsste ja meine einfache Methode aus dem anderen Thread mit Pointern auch gehen. :-)

Gruß, Little John
Na klar, Pointer haben immer den Abstand von SizeOf(Integer), aber was
soll das bringen?
Ich hatte Dich so verstanden, dass man die Adresse von Parametern nicht zuverlässig bestimmen kann, weil sie manchmal in Registern übergeben werden. Das war der Punkt an dem ich dachte, dass man so nicht weiter kommt. Wozu man sowas machen will ist ne ganz andere Frage.

Gruß, Little John
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Das ist vom Parametertyp abhängig, der ist hier immer gleich, ein Pointer.
Der ist auch immer gleich gross.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Little John

Beitrag von Little John »

Ach so. Dann hatte ich das, was Du in dem anderen Thread mit cxAlex diskutiert hast, falsch verstanden.
Sorry v.a. an mk-soft, wenn das hier in diesem Thread deplaziert ist.

Gruß, Little John
Antworten