AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TStringList.Delete und UNICODE ???

Ein Thema von Schucki · begonnen am 2. Nov 2011 · letzter Beitrag vom 3. Nov 2011
Antwort Antwort
Schucki

Registriert seit: 17. Jul 2004
158 Beiträge
 
Delphi 2010 Architect
 
#1

TStringList.Delete und UNICODE ???

  Alt 2. Nov 2011, 20:32
Delphi-Version: 5
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:
...
var strlMsg:TStringList;
...
  strlMsg:=TStringList.Create;
  strlMsg.Delete(0);
  FreeAndNil(strlMsg);
...
Nun verschwinden zwar die erste Zeilen aber irgendwie auch die Info das es sich bei der Liste um eine Liste mit UNICODE Zeichen handelt.

Wie stellt man das nun wieder an? Kann man die Liste noch irgendwie einstellen das er die als UNICODE behandeln soll???


Gruß Frank
Frank
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TStringList.Delete und UNICODE ???

  Alt 2. Nov 2011, 21:03
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TStringList.Delete und UNICODE ???

  Alt 2. Nov 2011, 21:09
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
(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.
$2B or not $2B

Geändert von himitsu ( 2. Nov 2011 um 21:11 Uhr)
  Mit Zitat antworten Zitat
Schucki

Registriert seit: 17. Jul 2004
158 Beiträge
 
Delphi 2010 Architect
 
#4

AW: TStringList.Delete und UNICODE ???

  Alt 2. Nov 2011, 21:24
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
Frank
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TStringList.Delete und UNICODE ???

  Alt 2. Nov 2011, 21:33
Das mit V5 im Beitrag oben stimmt nicht.
Läßt sich im erweiterten Editor bestimmt noch ändern, aber da vergessen fast alle was anzugeben. (gibt auch schon 'nen in die Jahre gekommenen Bugreport von mir, wie man das beheben könnte)

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.
Also, seit D2009 kann man beim SaveToFile angeben, wie gespeichert werden soll.

Dort kanst du die Singletons in Delphi-Referenz durchsuchenTEncoding verwenden, also direkt TEncoding.irgendwas, als Parameter übergeben.
$2B or not $2B
  Mit Zitat antworten Zitat
Schucki

Registriert seit: 17. Jul 2004
158 Beiträge
 
Delphi 2010 Architect
 
#6

AW: TStringList.Delete und UNICODE ???

  Alt 3. Nov 2011, 18:05
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
Frank
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: TStringList.Delete und UNICODE ???

  Alt 3. Nov 2011, 18:21
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TStringList.Delete und UNICODE ???

  Alt 3. Nov 2011, 19:20
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)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: TStringList.Delete und UNICODE ???

  Alt 3. Nov 2011, 20:02
Wobei Windows eigentlich mehr UTF-16 nutzt, statt UCS2.
Bis NT hat Windows UCS2 verwendet, ab Windows 2000 UTF-16.

Und .NET/Java verwenden ebenfalls UTF-16 wobei Java AFAIK am Anfang noch UCS2 verwendet hat.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: TStringList.Delete und UNICODE ???

  Alt 3. Nov 2011, 20:06
http://www.michael-puff.de/Programmi...code-UTF.shtml
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz