Hallo!
Zitat von
oki:
Die Letste Schleife setzt das klassische Längenbyte des Strings (String[0] = Länge eines ShortStrings) einfach minus 1 wenn letztes Zeichen nicht im Wertebereich ist.
Das ist Unsinn!
Das Längenbyte eines ShortString (stringvar[0]) gibt die Länge des Strings
ohne das Längenbyte an, kann also Werte von 0 bis 255 annehmen!
Dec(0) ergibt -1 - entweder kann das nicht in ein Char umgewandelt werden (Programm stürzt mit
Exception ab) oder es kommt 255 raus - so war das nicht gemeint!
Da nie sicher ist, ob wirklich ein Shortstring verwendet wird, sollte man bei Stringzugriffen immer mit Lenght und Setlength arbeiten und
nie stringvar[0] benutzen. Außerdem: warum Shortstrings verwenden? Die dynamische Stringverwaltung von Delphi ist doch hervorragend - und die Beschränkung auf 255 Bytes entfällt.
Ich kenne nur eine Anwendung für Shortstrings: in Records, die mit typisierten Datein verwendet werden sollen.
Gruß
Dietmar Brüggendiek