Seite 1 von 2
Structure Frage
Verfasst: 19.10.2006 23:29
von DW
Hallo erstmal. Ich habe mir structure in der PB Hilfe angeguckt wollte jetzt wissen, wie ich :
Code: Alles auswählen
Structure test
a.l
b.l
EndStructure
format.test
format\a=2
format\b=7
Debug @format
bei diesem Beispiel durch @format die Werte von a und b bekommen kann.
Verfasst: 19.10.2006 23:35
von STARGÅTE
@format gibt die die Position im Speicher zurück wo sich die beiden LONG werte A und B befinden
das heißt du kannst mit PeekL(@format) a bekommen und mit PeekL(@format+4) b
Verfasst: 19.10.2006 23:37
von DW
Danke dir!
Verfasst: 20.10.2006 09:49
von AND51
Oder du nimmst gleich besser
Das geht auch!
Dann musst du dich nicht mit den Pointer rumärgern.
In diesem Zusammenhang sieh dir mal die Schlüsselwörter
With / EndWith an (nur PB 4).
Verfasst: 20.10.2006 09:56
von #NULL
es gibt sonst auch eine offset-funktion:
Code: Alles auswählen
Structure test
a.l
b.l
EndStructure
format.test
format\a=2
format\b=7
Debug format\a
Debug PeekL( @format + 0 )
Debug PeekL( @format + OffsetOf(test\a) )
Debug ""
Debug format\b
Debug PeekL( @format + 4 )
Debug PeekL( @format + OffsetOf(test\b) )
Verfasst: 20.10.2006 12:57
von mk-soft
Wenn man mit Peek und Poke, sowie offset arbeiten will. dann mach es keinen Sinn erst eine Strukture anzulegen, sondern nur Speicher anzufordern. (AllocateMemory)
Strukturen sind dafür da um Struktuell mit Daten zu arbeiten. Diese dann mit Poke und Peek zu verwenden für automatisch zu einer unsauberen programmierung.
Verfasst: 20.10.2006 13:36
von #NULL
@DW
falls es um procedures geht
Code: Alles auswählen
Structure test
a.l
b.l
EndStructure
format.test
format\a=2
format\b=7
Procedure foo( *p.test )
Debug "proc: "+Str( *p\a )
Debug "proc: "+Str( *p\b )
EndProcedure
foo( format )
..aber das wirst du vermutlich schon wissen.
Verfasst: 20.10.2006 14:49
von DW
>@format
das macht schon Sinn. Vielleicht will man ja, oder vielleicht will ich ja auch, dass man einer procedure auf diese Art die Werte übergibt.
Verfasst: 20.10.2006 14:55
von #NULL
wenn du nicht die ganze structure, sondern nur einzelne feld-werte übergeben willst, brauchst du dich erst recht nicht um addressen kümmern
Code: Alles auswählen
Procedure foo2( n.l )
Debug "proc: "+Str( n )
EndProcedure
foo2( format\a )
..oder versteh ich da was falsch
Verfasst: 20.10.2006 15:30
von DW
Will ich aber nicht. Soll schon proc(@format) sein.
Das macht dann Sinn, wenn man einer Prozedur z.B 20 Werte übergeben muss. Das wär ja blöde:
test(a,b,c,d,e,f,g,h..)
Einfach so:
format.struc
format\a=2
format\b=2
test(@format)