Ja, bei
MSDN steht das natürlich auch. Das habe ich schon verstanden, ich hatte nur instinktiv damit gerechnet, dass spätestens beim Cast nach
PWideChar
eine neue Kopie vom String angelegt und diese gecastet würde.
Ein simples Beispiel zeigt, daß ein Cast auf PChar eben nur ein Cast ist. Der Delphi-String ist vom Speicher-Layout schon kompatibel zum PChar, so daß der Cast eigentlich nur den Compiler zufrieden stellen soll (nicht nur, ich weiß).
Folgendes Beispiel verdeutlicht das:
Delphi-Quellcode:
myString := defaultStrValue;
myString[1] := 'W';
funktioniert.
Delphi-Quellcode:
myString := defaultStrValue;
//UniqueString(myString);
PChar(myString)^ := 'W';
funktioniert nicht ohne das UniqueString.