Für allgemeine Fragen zur Programmierung mit PureBasic.
MVXA
Beiträge: 3823 Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:
Beitrag
von MVXA » 25.10.2004 17:44
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.
DarkDragon
Beiträge: 6291 Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:
Beitrag
von DarkDragon » 25.10.2004 17:51
Eine Strukur kann man nicht übergeben, aber eine Variable mit einer Struktur:
Code: Alles auswählen
Procedure SendECData(*ECData.ECProtokoll)
; Haufen Code...
EndProcedure
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
remi_meier
Beiträge: 1078 Registriert: 29.08.2004 20:11
Wohnort: Schweiz
Beitrag
von remi_meier » 25.10.2004 17:54
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)
MVXA
Beiträge: 3823 Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:
Beitrag
von MVXA » 25.10.2004 18:15
supi, danke ^^
Deeem2031
Beiträge: 1232 Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:
Beitrag
von Deeem2031 » 25.10.2004 20:44
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:
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
GPI
Beiträge: 1511 Registriert: 29.08.2004 13:18
Kontaktdaten:
Beitrag
von GPI » 25.10.2004 22:01
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...)