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.