Seite 1 von 1
Struktur an eine Funktion übergeben ?
Verfasst: 25.10.2004 17:44
von MVXA
Hallo
Kann man an eine Funktion eine Struktur übergeben ? Ich hab so eine Funktion geschrieben:
Code: Alles auswählen
Procedure SendECData(ECData.ECProtokoll)
; Haufen Code...
EndProcedure
PB macht aber dann bei der Declare Funtkion halt und gibt die Meldung aus:
[c]Syntax Error[/c]
Die Declare hat aber jaPBe erstellt.
Verfasst: 25.10.2004 17:51
von DarkDragon
Eine Strukur kann man nicht übergeben, aber eine Variable mit einer Struktur:
Code: Alles auswählen
Procedure SendECData(*ECData.ECProtokoll)
; Haufen Code...
EndProcedure
Verfasst: 25.10.2004 17:54
von remi_meier
Also dann sowas wie:
Code: Alles auswählen
Procedure SendECData(*ECData.ECProtokoll)
; Haufen Code...
EndProcedure
SendECData(@Variable.ECProtokoll)
oder wenn du eine geschützte Variable willst (geht leider nur ohne Strings ins Structure):
Code: Alles auswählen
Procedure SendECData(pECData.l)
Protected Temp.ECProtokoll
CopyMemory(pECData, @Temp)
Temp\irgendwas
EndProcedure
SendECData(@Variable.ECProtokoll)
Verfasst: 25.10.2004 18:15
von MVXA
supi, danke ^^
Verfasst: 25.10.2004 20:44
von Deeem2031
remi_meier hat geschrieben:Code: Alles auswählen
Procedure SendECData(pECData.l)
Protected Temp.ECProtokoll
CopyMemory(pECData, @Temp)
Temp\irgendwas
EndProcedure
SendECData(@Variable.ECProtokoll)
Das muss "CopyMemory(pECData, @Temp, SizeOf(ECProtokoll))" heißen
Und man kann auch das @ beim Aufruf weglassen:
Verfasst: 25.10.2004 20:51
von remi_meier
Ah ja, sorry

Verfasst: 25.10.2004 22:01
von GPI
Das mit COpy geht nur, wenn kein String in der Structur ist. Wenn man sauber programmiert und die Daten nur ließt, dann ist das kopieren auch unnötig. (man sollte diesbezüglich ein kommentar am header der Porcedure machen...)
Anderseits ist das eine gute Methode, mehr als ein Rückgabe wert von einer Procedure zu erhalten...
(p.s.: wenn nur gelesen wir, würde ich den Pointer *IN_ oder *RO_ (Read only) beginnen lassen...)