Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#14

Re: Pointerinhalt verändern

  Alt 1. Jul 2005, 10:12
Zitat von Delphi-Freak:
Bedeutet das, dass wenn man zwei Typen
Delphi-Quellcode:
type
  MyType: Array of Byte;
  PMyType: ^MyType;
hat, dass es dann automatisch die »Funktion« PMyType gibt, um einen Pointer zu erzeugen?
Nein, es bedeutet, daß man verschiedene Typen ineinander "konvertieren" kann. Das nennt sich dann "Typecast". Diese Methode gibt es in verschiedenen Sprachen und sie ist an verschiedenen Stellen unabdingbar - insofern deine benutzte Sprache eine halbwegs rigide Typüberprüfung während der Kompilation vornimmt.

Beispiel:
Delphi-Quellcode:
var
  Int32: Integer; // vorzeichenbehaftet 32bit
  UInt32: DWORD; // vorzeichenlos 32bit
  Bla: PChar; // Pointer auf nullterminierte Zeichenkette
begin
  Int32 := -1;
  UInt32 := DWORD(Int32); // vorzeichenbehaftet nach vorzeichenlos konvertieren
  // Hier ist (UInt32 == $FFFFFFFF)
  Bla := 'Ottokar das Früchtchen';
  UInt32 := DWORD(Bla); // Pointer nach "unsigned integer"
  UInt32 := UInt32 + 4;
  Bla := PChar(UInt32);
  // Hier zeigt Bla auf 'kar das Früchtchen'! Wir sind nämlich 4 Bytes vorgerückt
end;
String(PCharVariable) und PChar(StringVariable) gehören ebenfalls in diese Kategorie, haben aber noch eine tiefere Bedeutung ("compiler magic")!
  Mit Zitat antworten Zitat