Difference between revisions of "Pointer/de"

From Lazarus wiki
Jump to navigationJump to search
Line 19: Line 19:
 
   p := nil;      // Die Variable p vom Datentyp Pointer enthält jetzt keine Adresse mehr (die Variable p zeigt auf nichts).
 
   p := nil;      // Die Variable p vom Datentyp Pointer enthält jetzt keine Adresse mehr (die Variable p zeigt auf nichts).
 
                   // Der Pointer p kann mit einer neuen Speicheradresse versehen werden.
 
                   // Der Pointer p kann mit einer neuen Speicheradresse versehen werden.
 +
end;
 +
</syntaxhighlight>
 +
<br><br>
 +
Beispiel für die Verwendung eines Pointers an einem Record:<br>
 +
<syntaxhighlight>
 +
type
 +
  TNewRecord = record
 +
      Wert1: ShortString;
 +
      Wert2: ShortString;
 +
      Wert3: ShortString;
 +
  end;
 +
var
 +
  p: ^TNewRecord;
 +
  i, j: integer;
 +
begin
 +
  New(p);                      // erstellt einen Pointer und ein Object vom Typ TNewRecord.
 +
  p^.Wert1 := "Test";          // befüllt über den Pointer das Datenfeld des Objektes.
 +
  p^.Wert2 := "TestTest";      // befüllt über den Pointer das Datenfeld des Objektes.
 +
  p^.Wert3 := "TestTestTest";  // befüllt über den Pointer das Datenfeld des Objektes.
 +
  Dispose(p);                  // Gibt den Pointer und damit das Objekt frei.
 +
                                // Damit sind alle Datenfelder und Daten des Pointers p gelöscht.
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>

Revision as of 16:24, 9 September 2012

Deutsch (de) English (en) suomi (fi) français (fr) русский (ru)


Eigenschaften eines Pointers (Zeigers):

  • Ein Pointer ist ein Zeiger (eine Referenz) auf eine Speicherstelle.
  • Ein Pointer ist ein ganzzahliger Datentyp zum speichern einer Arbeisspeicheradresse.
  • Ein Pointer verweist auf die Anfangsadresse einer Variablen oder eines Objektes.
  • Die Größe des Pointers liegt zwischen Longint oder Int64 .
  • Die genaue Größe des Zeigers ist abhängig vom Zielbetriebssystem und dem Zielprozessor.


Beispiel für die Verwendung eines Pointers an einem einfachen Datentyp:

var
  a, b: Integer;  // a und b sind Integer-Variablen.
  p: ^Integer;    // p ist ein Pointer, der die Speicheradresse einer Variablen vom Datentyp Integer aufnehmen kann.
begin
  a := 500;       // Die Variable a vom Datentyp Integer erhält einen gültigen Wert zugewiesen.
  p := @a;        // Die Variable p vom Datentyp Pointer erhält jetzt die Adresse der Variablen a zugewiesen.
  b := p^;        // Die Variable b vom Datentyp Integer holt sich über die Adresse im Pointer p den Wert aus der Variablen a.
  p := nil;       // Die Variable p vom Datentyp Pointer enthält jetzt keine Adresse mehr (die Variable p zeigt auf nichts).
                  // Der Pointer p kann mit einer neuen Speicheradresse versehen werden.
end;



Beispiel für die Verwendung eines Pointers an einem Record:

type
   TNewRecord = record
      Wert1: ShortString;
      Wert2: ShortString;
      Wert3: ShortString;
   end;
var
   p: ^TNewRecord;
   i, j: integer;
begin
   New(p);                      // erstellt einen Pointer und ein Object vom Typ TNewRecord.
   p^.Wert1 := "Test";          // befüllt über den Pointer das Datenfeld des Objektes.
   p^.Wert2 := "TestTest";      // befüllt über den Pointer das Datenfeld des Objektes.
   p^.Wert3 := "TestTestTest";  // befüllt über den Pointer das Datenfeld des Objektes.
   Dispose(p);                  // Gibt den Pointer und damit das Objekt frei.
                                // Damit sind alle Datenfelder und Daten des Pointers p gelöscht.
end;



--Olaf 07:51, 8 September 2012 (UTC)