Anfängerfragen zum Programmieren mit PureBasic.
DW
Beitrag
von DW » 19.10.2006 23:29
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.
STARGÅTE
Kommando SG1
Beiträge: 7031 Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:
Beitrag
von STARGÅTE » 19.10.2006 23:35
@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
DW
Beitrag
von DW » 19.10.2006 23:37
Danke dir!
AND51
Beiträge: 5220 Registriert: 01.10.2005 13:15
Beitrag
von AND51 » 20.10.2006 09:49
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).
#NULL
Beiträge: 2238 Registriert: 20.04.2006 09:50
Beitrag
von #NULL » 20.10.2006 09:56
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) )
mk-soft
Beiträge: 3855 Registriert: 24.11.2004 13:12
Wohnort: Germany
Beitrag
von mk-soft » 20.10.2006 12:57
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.
#NULL
Beiträge: 2238 Registriert: 20.04.2006 09:50
Beitrag
von #NULL » 20.10.2006 13:36
@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.
DW
Beitrag
von DW » 20.10.2006 14:49
>@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.
#NULL
Beiträge: 2238 Registriert: 20.04.2006 09:50
Beitrag
von #NULL » 20.10.2006 14:55
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
DW
Beitrag
von DW » 20.10.2006 15:30
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)