Handles herausfinden / ermitteln

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag 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...
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

ah, ok, danke!
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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)
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag 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 *
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag 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:
Antworten