Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.119 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Pointer : Eine Speicherstelle weiterrücken

  Alt 13. Mär 2004, 11:52
Moin atreju,

es wird nicht jeder Pointer hintereinander gespeichert, sondern es geht darum wie man an Daten herankommt, die im Speicher unmittelbar hintereinander liegen.
Dann benötigt man nur die Adresse des ersten Byte, und kann dann, durch ein einfaches Inc auf das nächste Element kommen.
Da die Variable pinput ein untypisierter Pointer ist, "weiss" der Compiler nicht, wie der den Inc Befehl umsetzen soll, da die Compiler Magic auf Grund des Typs des Pointers weiss, um wieviel der Wert erhöht werden muss.
In dem Beispiel handelt es sich um eine Pointer auf einzelne Bytes, und der Typecast mit PByte(...) dient nur dazu dem Compiler mitzuteilen, dass er den Wert der Variablen um 1 hochzählen soll.
Hätte man geschrieben

inc(PDWORD(pinput)); würde pinput um 4 erhöht werden, da ein DWORD eben 4 Byte belegt.

Das funktioniert dann genauso mit Pointern auf beliebige Datenstrukturen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat