Seite 2 von 2

Verfasst: 15.10.2005 15:20
von hardfalcon
@AND51: Offset = Speicheradresse. Der Hauptspeicher deines PCs (also das RAM) ist in Byte-Blöcke zerteilt. Ein Offset ist im Grunde nichts anderes als die Nummer eines bestimmten Bytes im Speicher.

Wenn du jetzt z.B. ein String hast, und du willst von dem nur den 7. Buchstaben auslesen, dann geht das etwa so (rein theoretisch):

Code: Alles auswählen

;wir erzeugen den String
String.s = "Dies ist nur ein Teststring!"
;wir lesen mit PeekB() ein einzelnes Byte aus, der Variablenname mit vorrangestelltem * gibt die Speicheradresse dieser Variable zurück
Byte.b = PeekB(*String)
;Dieses Byte ist jetzt der Asc()-Wert des 7. Zeichens in unserm String; da wir aber den 7. BUCHSTABEN wollen, nehmen wir noch Chr()
Debug Chr(Byte.b)
In der Praxis wird PureBasic jedoch meckern, weil du auf einen reservierten Speicherberreich zugreifen willst...

Verfasst: 15.10.2005 15:25
von AND51
ah, ok, danke!

Verfasst: 15.10.2005 15:29
von edel
So wird nicht gemeckert ;-)

Code: Alles auswählen

String.s = "Dies ist nur ein Teststring!"
*Byte.BYTE = @String + 6 ; 0 - 6
Debug Chr(*Byte\b)

Verfasst: 15.10.2005 15:48
von HeX0R
hardfalcon hat geschrieben: ;wir lesen mit PeekB() ein einzelnes Byte aus, der Variablenname mit vorrangestelltem * gibt die Speicheradresse dieser Variable zurück
Mööööp!
Mit vorangestelltem @ kriegst du die Speicheradresse und nicht mit *

Verfasst: 15.10.2005 16:05
von hardfalcon
@Hex0r: danke! Das wusste ich ja noch gar nicht... Ich dachte immer, @ würde nur für Procedures verwendet werden... Da sieht man mal, was dabei rauskommt, wenn ICH denke... :freak: