Forum: Programmieren allgemein
by himitsu,
7. Jan 2020
Auch als Dokumentation für den Entwickler, denn bei PChar bzw. LPCSTR usw. denkt doch jeder erstmal an "endet mit #0".
Gäbe es einen eigenen Typen, dann wüssten Entwickler und Debugger sofort, dass es hier bis #0#0 geht. (ohne die Dokumentation für diese spezielle Variable/Parameter zu kennen)
Wie z.B. beim TDateTime, der ja eigentlich auch nur ein Double ist, den der Debugger aber...
Forum: Programmieren allgemein
by himitsu,
2. Jan 2020
Wenn die #0 im String enthalten ist (innerhalb des Length), dann gehört sie zum String und wird auch angezeigt.
Forum: Programmieren allgemein
by himitsu,
2. Jan 2020
TFileName ist kein Alias, es ist ein Nachfahre. :zwinker:
type
TFileName = type string;
^^^^
Definiert einen neuen Typ mit den selben Eigenschaften, welcher auch zuweisungskompatibel ist.
String ist sowas, wie Integer früher und NativeInt jetzt ist ... er ist ein Alias auf den nativen Typen des Compilers.
* vor Delphi2009 war es der AnsiString
* und gaaaaaanz früher war...
Forum: Programmieren allgemein
by himitsu,
2. Jan 2020
Jain.
Delphi-Strings sind per-se nicht null-terminiert, da ihre Länge gespeichert und von Delphi verwendet wird.
Beim ShortString (dem "String" aus TurboPascal und dem ersten Delphi) gibt es nur das Längen-Byte und keine explizite #0 am Ende.
Bei den LongStrings (AnsiString/UTF8String/RawByteString/... und UnicodeString) gibt es aber als Optimierung auch die #0#0 am Ende, damit es ohne...
Forum: Programmieren allgemein
by himitsu,
1. Jan 2020
Delphi hängt standardmäßig immer zwei Nullen an seine Strings an. (als Kompatibilität auch zu solchen Listen)
Also im Prinzip könnte man es hier auch weglassen, aber zur Dokumentation hänge ich auch meistens die richtige Anzahl der Nullen nochmals an, also diese #0#0 für Listen. (nur bei "einfachen" PChars lasse ich diese #0 weg)
Und ja, hier sind es "eigentlich" zwei #0,
denn es ist eine...