Umlaute aus Textdatei in TStringList
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Umlaute aus Textdatei in TStringList
@theo Aber das erledigt sich doch auch sobald der compiler utf8string kennt dann kann er utf8string[x] einfach verbieten. copy,pos,trim & co funktionieren dann aber problemlos genauso wie konstantenzuweisungen oder ? auch stringlist kann eine überladene funktion Add(s : utf8string) haben u.s.w. das wär doch schon ein riesen schritt oder nicht ?
@mschnell glaub du bist den leuten auf der liste einfach mit deinem unicode generve auf den sach gegangen ist ja hier schon nervig gewesen xD
was ist da so viel komplizierter ?
@mschnell glaub du bist den leuten auf der liste einfach mit deinem unicode generve auf den sach gegangen ist ja hier schon nervig gewesen xD
was ist da so viel komplizierter ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Re: Umlaute aus Textdatei in TStringList
Ja, das wäre ein Schritt um überladene Funktionen zu verwenden.Christian hat geschrieben:@theo Aber das erledigt sich doch auch sobald der compiler utf8string kennt dann kann er utf8string[x] einfach verbieten. copy,pos,trim & co funktionieren dann aber problemlos genauso wie konstantenzuweisungen oder ? auch stringlist kann eine überladene funktion Add(s : utf8string) haben u.s.w. das wär doch schon ein riesen schritt oder nicht ?
Allerdings muss man sagen, dass das Problem in der reinen "Unicode-Welt" eigentlich auch wieder nicht so gross ist. Man mus sich einfach vom AnsiString verabschieden, so schwer das auch fällt.

Wenn ich mit der Einstellung rangehe dass in meinem Programm alles UTF-8 ist, dann sind die bestehenden AnsiString Funktionen einfach eine Art "low-level" Funktionen (Byte Zugriff).
Ob die eigentlichen UTF-8 Geschichten (eben utf8string[x]) überhaupt in den Compiler gehören ist fraglich.
Was ich eher im Compiler begrüssen würde, wäre ein UCS-4 String / Char.
Jedenfalls ist die "fixe Idee" von mschnell, Unicode so zu verwenden als wäre es ANSI imho einfach nicht vernünftig umzusetzen.
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Umlaute aus Textdatei in TStringList
Ich würde als Benutzer von Lazarus/FPC ganz einfach begrüssen, wenn es schon inkomatible Sachen gibt, das mir die IDE/Compiler ganz einfach ein Warning oder besser Fehler (Inkompatible Typen,...) gibt.theo hat geschrieben:Was ich eher im Compiler begrüssen würde, ...
Denn wenn gerade diese 'einfachen' String/Texte' (logische) Probleme machen, so ist das nicht unbedingt als Argument für den Einsatz. Eher ein Killerargument dagegen. Jetzt NICHT aus der Sicht eines Hackers betrachtet, denn der weis ja meistens eh um die Probleme.
Vor allen, was soll man davon halten
Code: Alles auswählen
1:
StringList.Add('Erwin Müller'); // Ist Müller nun UTF8
StringList.SaveToFile('TEST.TXT'); // (Editor: Eine Zeile, Erwin Müller)
StringList.Clear;
StringList.LoadFromFile('TEST.TXT');
ShowMessage(StringList.Strings[0]); // Anzeige leeres Fenster
2:
StringList.Add('Erwin Meier');
StringList.SaveToFile('TEST.TXT'); // (Editor: Eine Zeile, Erwin Meier)
StringList.Clear;
StringList.LoadFromFile('TEST.TXT');
ShowMessage(StringList.Strings[0]); // Anzeige Erwin Meier
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Umlaute aus Textdatei in TStringList
Einspruch.theo hat geschrieben: Jedenfalls ist die "fixe Idee" von mschnell, Unicode so zu verwenden als wäre es ANSI imho einfach nicht vernünftig umzusetzen.
In der Praxis funktioniert das mit widestring sehr wohl. Meine Anwender aus der ganzen Welt inklusive China tun die seit Jahren mit Erfolg. Ich selbst arbeite so, seit Borland die widestring eingführt hat und das ist schon bald zehn Jahre her.
Re: Umlaute aus Textdatei in TStringList
Darüber hatten wir schon oft gesprochen.mse hat geschrieben: Einspruch.
In der Praxis funktioniert das mit widestring sehr wohl. Meine Anwender aus der ganzen Welt inklusive China tun die seit Jahren mit Erfolg. Ich selbst arbeite so, seit Borland die widestring eingführt hat und das ist schon bald zehn Jahre her.
Es mag für eine bestimmte Anwendung reichen, einige Unicode "Facts" zu ignorieren.
Ein Compiler, eine Toolchain darf das imho nicht tun.
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Umlaute aus Textdatei in TStringList
Auch darüber haben wir schon öfters gesprochen. FPC pos, copy, setlength usw. funktionieren ohne Einschränkungen mit Unicode widestrings.theo hat geschrieben: Ein Compiler, eine Toolchain darf das imho nicht tun.
Re: Umlaute aus Textdatei in TStringList
Früher konnte ich unter GTK1 gar keine Umlaute in den Text schreiben.af0815 hat geschrieben: wenn es schon HIER zu nicht gewünschten Effekten kommt.
War das besser?
Es ist schon klar, dass es Verwirrung gibt. Aber was soll man machen?
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Umlaute aus Textdatei in TStringList
Stimmt zwar technisch, nicht aber in der Praxis. Für Europäische und Amerikanische Sprachen gibt es bei UTF16 keine "pairs", jedes Zeichen ist also 16 Bit. Demzufolge ist _hier_ bei einem UTF16 String Typ s der i-te Unicode-Character (genau wie bei ANSI-Codierung). Bei UTF8 eben nicht: schon ein simples ä besteht aus zwei Bytes (Code-Elements) und bei der momentanen Implementierung ist bei UTF8String dann eben s nicht der i-te Unicode-Character, sondern irgend ein Code-Element.theo hat geschrieben:UTF-8 oder UTF-16 ist da nur ein marginaler Aspekt.
-Michael
Zuletzt geändert von mschnell am Sa 22. Nov 2008, 12:45, insgesamt 1-mal geändert.
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Umlaute aus Textdatei in TStringList
Da war ich durchus nicht der einzigeChristian hat geschrieben:glaub du bist den leuten auf der liste einfach mit deinem unicode generve auf den sach gegangen ist ja hier schon nervig gewesen xD



Das Zeug macht in der aktuellen Version beinahe jeden alten Code zunichte. Das ist so nicht akzeptabel.
Kompliziert ist so etwas einfaches wie c:= s; s := copy(s1, 1, length(s2)); oder (vor allem bei WideString) s := 'Hallo Herr Müller";
-Michael
Zuletzt geändert von mschnell am Sa 22. Nov 2008, 12:45, insgesamt 2-mal geändert.
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Umlaute aus Textdatei in TStringList
Wenn du mich so fragst - so gesehen eigentlich ja. Denn wenn es geht, so sollte es funktionieren. Und wenn eine explizierte Umwandlung erzwungen wird. Implizierte Wandlungen, die das Chaos erzeugen sollten nicht möglich sein, oder nur dann wenn ich explizit dem Kompiler sage, ja kompilier das, obwohl es eigenlich zu Problemen führen wird.theo hat geschrieben: Früher konnte ich unter GTK1 gar keine Umlaute in den Text schreiben.
War das besser?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Umlaute aus Textdatei in TStringList
mschnell hat geschrieben: Stimmt zwar technisch, nicht aber in der Praxis. Für Europäische und Amerikanische Sprachen gibt es bei UTF16 keine "pairs", jedes Zeichen ist also 16 Bit. Demzufolge ist _hier_ bei einem UTF16 String Typ s der i-te Unicode-Character (genau wie bei ANSI-Codierung).
Stimmt nur leider nicht. Was machst du mit Decomposed Characters, Bidi Markers etc pp. ?
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Umlaute aus Textdatei in TStringList
Mag sein. Dann müsste man es aber wenigstens mit einer Compiler-Version abschalten können und weiterin den alte ANSIString Typ (als Type String) verwenden können um old-school-Code weiter zu verwenden und Neueinsteiger nicht völlig zu verschrecken ("lerne erstmal Unicode, danach kannst Du 'mal Versuchen ein Lazarus Programm zu machen"). Das wäre mit der momentanen LCL möglich, wenn der Compiler ANSIString und UTF8String unterscheiden könnte und automatisch umwandlen würde.theo hat geschrieben:Jedenfalls ist die "fixe Idee" von mschnell, Unicode so zu verwenden als wäre es ANSI imho einfach nicht vernünftig umzusetzen.
Das FPC Team hat anscheinend eine neue Unicode Implementierung in der Mache wo ein String dynamisch eine Codierung bekommt und die Umwandlungsroutinen somit wissen, was sie tun sollen. Ich hoffe das wird nicht zu langsam, da der Typ dann ja bei geder Operation gecheckt werden muss.
-Michael
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Umlaute aus Textdatei in TStringList
Außer, wenn man z.B. ein Programm für ein alt-Ägyptisches Wörterbuch schreibt...theo hat geschrieben:Es mag für eine bestimmte Anwendung reichen, einige Unicode "Facts" zu ignorieren.
Soll er auch nicht. Es liegt im Ermessen des Anwenders ob er Unicode-Codepoints zulassen will, die mehr als 16 Bit benötigen. Wenn er das wirklich tut, muss er bei WideStrings mit denselben Schwierigkeiten rechen wie momentan bei UTF8String alle user außerhalb der USA.theo hat geschrieben:Ein Compiler, eine Toolchain darf das imho nicht tun.
-Michael
Zuletzt geändert von mschnell am Sa 22. Nov 2008, 12:49, insgesamt 1-mal geändert.
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Umlaute aus Textdatei in TStringList
WideStrings verwenden. Dann ist alles ganz einfach (außer Alt-Ägyptischtheo hat geschrieben:Es ist schon klar, dass es Verwirrung gibt. Aber was soll man machen?

-Michael
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Umlaute aus Textdatei in TStringList
Nicht verwenden, genauso wie alt-Ägyptischtheo hat geschrieben:Stimmt nur leider nicht. Was machst du mit Decomposed Characters, Bidi Markers etc pp. ?

-Michael