Einzelnen Beitrag anzeigen

IngoD7

Registriert seit: 16. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Unterschied zwischen String und PChar

  Alt 23. Feb 2005, 08:32
Zitat von Oxmyx:
string (eigentlich nur ein Alias von AnsiString bzw. ShortString) ist ein Compiler-Feature von Delphi.
AnsiString und ShortString sind aber nicht dasselbe. Was von beiden String darstellt, hängt von der Compilerdirektive $H ab. Defaultmäßig ist String ein AnsiString.

Zitat von Oxmyx:
Der besitzt einen Speichermanager und einen Referenzzähler.
Nur AnsiString, nicht ShortString.

Zitat von Binärbaum:
Ein PChar ist nur ein Zeiger auf einen Char. Von dieser Stelle an wird solange weiter gelesen, bis man auf #0 (nicht als Zeichen, sondern als Wert) stößt. Dort ist der PChar zuende. Da ein PChar immer mit einer solchen Null beendet wird, spricht man auch von null-terminierten Zeichenketten.
Die Short-Strings von Delphi haben hingegen im ersten Byte einen Zähler, der die Länge angibt.
Ergänzung: AnsiString hat vor seinem eigentlichen Inhalt im Speicher 4 Byte für die Längenangabe und 4 Byte für die Referenzzählung. Das ist aber für die normale Verwendung von String unerheblich.

Normalerweise benutzt man also String anstatt PChar. Da, wo PChar Pflicht ist, stolpert man ggf. früh genug.
  Mit Zitat antworten Zitat