Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.172 Beiträge
 
Delphi 12 Athens
 
#17

AW: Ansi Encoding ohne Leerzeichen

  Alt 7. Aug 2017, 19:39
Daraus schließe ich jetzt einfach mal (bitte korrigiert mich):

String[255] entspricht ShortString, String[1] bis String[255] verhalten sich wie schon beim alten Turbopascal. (Array of Char, bei dem an Position 0 die Längenangabe des tatsächliche genutzten Teils des Arrays steht.)

String ist, wie himitsu beschrieb, eine nullterminierte Zeichenfolge.
Der Typ (Type-Definition) ShortString entspricht String[255].
String[1] bis String[255] sind ShortString (DatenFormat-Definition).

Und LongString (AnsiString und UnicodeString) sowie WideString arbeiten mit Längen-Bytes/Integern, aber haben auch PChar-Charakteristiken drin, die aber vom String selber nicht verwendet werden.
WideString ist fast so wie LongString, nur etwas Einfacher und es wird von der OleAuth32.dll verwaltet. (WinAPI und deren SpeicherManager)

Delphi-Quellcode:
var
  S1, S2, S3: string;

S1 := 'abc'#0'def';
S2 := Copy(S1); // S2 := S1; ... damit auch wirklich der Inhalt kopiert wird, da LongStrings referenzverwaltet sind und sonst nur den Pointer, aber nicht den Inhalt kopieren
S3 := PChar(S1);
ShowMessage(Format('%d %d %d', [Length(S1), Length(S2), Length(S3)]));
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 7. Aug 2017 um 19:46 Uhr)
  Mit Zitat antworten Zitat