Thema: Delphi [basics] pointer

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

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

Re: [basics] pointer

  Alt 5. Jun 2004, 00:52
Moin Skyruner,

Pointer von to point = zeigen
Es ist also ein Zeiger (auf einen Speicherbereich).

Das heisst nichts anderes, als er die Adresse einer Speicherstelle enthält.
Wie diese jetzt zu interpretieren ist, hängt vom Zusammenhang ab.

In Deinem Falle ist adothing als Pointer auf ein integer deklariert (üblicher wäre Padothing. Präfix P für Pointer).
Ein integer ist ein 32 Bit Wert mit Vorzeichen, somit sieht der Compiler den Wert, der an die Adresse die adothing enthält als integer Wert an.

Auslesen kannst Du den Wert dann durch das sogenannte Dereferenzieren mit ^

Das sähe dann z.B. so aus:

ShowMessage(IntToStr(lastrecord^)); durch das ^ wird dem Compiler gesagt, dass der Wert auf den lastrecord zeigt ausgelesen werden soll. Da es ein Pointer auf einen Integer ist, funktioniert das auch problemlos.

Damit das Füllen überhaupt funktioniert, müsste allerdings zu Anfang einmal Speicher reserviert werden, z.B. so:

lastrecord := AllocMem(4); jetzt enthält lastrecord die Adresse eines vier Byte grossen, mit 0 initialisierten Speicherbereiches, so dass die Funktion einen Integerwert an dieser Adresse ablegen kann.

Zitat von Skyruner2:
warum sind sie so besonders, und wie benutze ich sie?
Besonders...?
Da versteh' ich jetzt nicht, was Du meinst.
In Delphi sind sie oft besonders, weil die sogenannte Compilermagic vieles vor dem Entwickler verbirgt, bzw. automatisch erledigt, worum man sich sonst selber kümmern müsste.
Beispielsweise enthalten Variablen von Objekten (z.B. Form1) auch nur Pointer. Dank des Compilers muss man bei diesen aber nicht selber dereferenzieren.

Was vielleicht noch erwähnenswert ist:
Wird ein typisierter Pointer (also auf einen bestimmten Datentyp, wie in Deinem Beispiel) mittels inc erhöht, so wird er automatisch um die Grösse (sizeof) des Typs erhöht.
Es ist ein "beliebter" Fehler, hier selber die Grösse anzugeben.
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