Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
14. Aug 2020
'>'#13#10#13#10#13#10'<' = 8
'>'#10#10#10'<' = 6
'hätte' = 5
'ha'#$0308'tte' = 6
Tja, wenn man die Char's zählt, dann bekommt man eben auch die Anzahl der Chars.
Im Notfall muß man eben vorher den String "normalisieren", wenn man was Anderes haben will.
Denn egal ob ich #13#10 als EINS zähle
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
12. Aug 2020
Ja, es zählt die Zeichen, und sollte ein Zeilenumbruch 2 Zeichen lang sein, dann sind das eben auch 2 Zeichen und nicht 1.
Man darf vorher gern #13#10 durch #10 ersetzen, oder man muß die Zählfunktion anpassen.
Ja, aber wenn du über S zugreifst und die Indexprüfung aktiv ist, dann raucht es, sobald du auf diese impliziten #0 zugreifen willst.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
12. Aug 2020
Die Hilfe schreibt inzwischen auch mal mehr zu den früher geheimen Internas.
http://docwiki.embarcadero.com/RADStudio/Rio/de/String-Typen_(Delphi)
Und der geheime Typ StrRec in der System.pas
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
12. Aug 2020
Wenn du über den String zugreifst, dann mußt du neben #0 auch Length beachten, denn wenn kein #0 im String vorkommt, kommt es bei aktiver Indexprüfung zu einem Fehler.
Über einen Cast nach PChar kannst du auch "sicher" zwei 2 Zeichen hinter das String-Ende zugreifen.
Ein Leer-String ist eigentlich NIL, aber PChar(S) leitet bei '' auf eine "Ersatz"-Konstante um welche aus #0#0 besteht, womit...