![]() |
Delphi-Version: 5
TStringList.Delete und UNICODE ???
Hallo zusammen,
ich habe das Problem das ich in einer TStringListe mehrere Zeichen habe die auch UNICODE sind, ich möchte aus dieser Liste nun Einträge löschen. Ich verwende hierzu:
Delphi-Quellcode:
Nun verschwinden zwar die erste Zeilen aber irgendwie auch die Info das es sich bei der Liste um eine Liste mit UNICODE Zeichen handelt. :-(
...
var strlMsg:TStringList; ... strlMsg:=TStringList.Create; strlMsg.Delete(0); FreeAndNil(strlMsg); ... Wie stellt man das nun wieder an? Kann man die Liste noch irgendwie einstellen das er die als UNICODE behandeln soll??? Gruß Frank |
AW: TStringList.Delete und UNICODE ???
Um welche Delphiversion geht es denn? Um Delphi 5 wie im Beitrag steht? Um Delphi 2006 wie im Profil steht? Um eine aktuellere Version?
Bei Delphi XE ist das nämlich z.B. kein Problem. Und die beiden angegebenen Versionen waren noch nicht unicodefähig. |
AW: TStringList.Delete und UNICODE ???
Beim Speichern (SaveTo...) kannst du angeben, was sich in dieser Datei befindet.
[edit]ab Unicode-Delphis[/edit] Vor Delphi 2009 kann TStingList nicht mit Unicode umgehen. Vermutlich befindet sich ein BOM am Anfang der Datei, welcher von dieser Stringliste noch nicht beachtet und einfach als "Buchstaben" behandelt wird. Dieses BOM müßtest du natürlich wieder hinzufügen, wenn du es gelöscht hast :zwinker: (bei UTF-8 sind das die ersten 3 Byte/AnsiChar, bzw. umkodiert 1 Char in UCS2) Unicode? Du meinst wohl eine UTF-8 kodierte Datei? Denn mit UCS2 würde die Stringliste nicht arbeiten, da sie bei der ersten #0 abbricht. |
AW: TStringList.Delete und UNICODE ???
Ihr habt natürlich recht... :-(
Momentan bin ich mit RAD Studio 2010 unterwegs und komme vom BDS 2006. Das mit V5 im Beitrag oben stimmt nicht. :-( Ich habe mein Programm nun so langsam angepasst doch hänge ich mich immer wieder an diesem Unicode Zeuch auf da ich es anscheinend noch nicht ganz klar verstanden habe. Gruß Frank |
AW: TStringList.Delete und UNICODE ???
Zitat:
Zitat:
Dort kanst du die Singletons in ![]() |
AW: TStringList.Delete und UNICODE ???
Ok vielen Dank für die Erklärung, abschließend eine Frage noch.
Wie ist das mit der Dateigröße eigentlich? Ist es so das dann jedes Zeichen IMMER in 2 Byte gespeichert wird oder eben nur diese die im "normalen" Alphabet nicht vorkommen? Wenn es eine reine deutsche Textdatei ist, ist diese dann immer doppelt so groß??? Gruß Frank |
AW: TStringList.Delete und UNICODE ???
Ja, die Datei ist doppelt so groß. Wenn du das nicht möchtest, benutze UTF-8 statt dem "normalen" Unicode mit immer 16-Bit pro Zeichen.
|
AW: TStringList.Delete und UNICODE ???
Bei vorwiegend asiatischen und ähnlichen Sprachen, mit vielen Zeichen in den höheren Unicodebereichen, wird UTF-8 bestimmt mehr Platz belegen, als UCS2.
UCS2 = immer 2 Byte und ein kleiner Bereich Wobei Windows eigentlich mehr UTF-16 nutzt, statt UCS2. Nur daß UTF-16 mit UTF-8 und UTF-7 rein garnichts gemeinsam haben, da nur der Name gleich klingt, aber nicht die Kodierung. Bei UTF-16 wurde ein Bereich (mitten drin) im UCS2 belegt und wird als Surrogate Pairs verwendet wo dann jeweils 2 Zeichen ein Zeichen ergeben. (nur hat man da Platz verwendet ... das merkt man, wenn man sich die Definituin mal ansieht) |
AW: TStringList.Delete und UNICODE ???
Zitat:
Und .NET/Java verwenden ebenfalls UTF-16 wobei Java AFAIK am Anfang noch UCS2 verwendet hat. |
AW: TStringList.Delete und UNICODE ???
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz