Zitat:
Die Delphi-Strings sind schon nullterminiert.. das einzige was sie von den PChars unterscheidet sind die 8 Bytes (Länge und Referenzzähler) vor der eigentlichen Zeichenkette, wobei der Pointer, der den String referenziert auf das erste Zeichen der Zeichenkette zeigt (die 8 Bytes liegen also eigentlich hinter der eigentlichen Adresse des Strings), und die Spezialbehandlungen die Delphi intern ausführt.
Wenn LongStrings nullterminiert sind, warum besteht Delphi dann stur darauf, dass ich einen Typecast zu PChar mache? In diesem Falle
ist ein String ein PChar (von den Spezialbehandlungen abgesehen, aber davon gibt es in diesem Fall ja keine), ein Pointer auf einen Char eben, char*.
@Christian:
Ich stelle gar nicht infrage, dass ein String ein Pointer auf ein Zeichen ist. Mein Problem liegt darin, dass ein String, wenn er denn nullteminiert ist, doch eine absolut überflüssige Konstruktion wäre. Man könnte einen String intern genauso wie ein PChar behandeln und die Spezialbehandlungen für PChar implementieren. Wäre ein String nullterminiert, warum dann ein Typecast?
Irgendwie steh ich immer noch auf'm Schlauch...
MfG,
d3g