Unicode mal verständlich

Antworten
Christian
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:

Unicode mal verständlich

Beitrag von Christian »

Kann mir das mal bitte jemand erklären ich blick da wirklich nicht mehr durch.

Im Prometheus werden bei LANG=*.utf8 die Zeichen in den Editfeldern verschluckt wenn ich auf ISO... setze wird ab dem entsprechenden zeichen nichts mehr angezeigt. Im VT werden mit TextOut immer ? angezeigt.

Im AudioX kann ich komischerweise mit *.utf8 Umlaute eingeben die auch korrekt in den mp3s gespeichert werden und auch wieder geladen und angezeigt. Im VT werden diese komischen A* sonderzeichen dargestellt.

2 Programme alles string basiert (zumindest die VT ausgaben) und komplett anderes Verhalten. zumindest vom VT. Im prometheus sind alles Db Edits und im Audio X normale TEdit villeicht ist das mit den Edits damit zu erklären.

Was macht die LCL überhaupt anders wenn die LANG Variable sich ändert ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Tja, das ist ein Buch mit sieben Siegeln ;-)
Von welcher Plattform sprichst du überhaupt.
Ich weiss nur, dass GTK1 und GTK2 da ziemlich verschieden funzen.
Während du bei GTK2 nur UTF8 Strings z.B. an TextOut schicken darfst, kommt dabei bei GTK1 nichts gescheites an und umgekehrt.
Font.Charset hat unter GTK z.B. gar keine Bedeutung.
Oder sprichst du von Win? Da ist's glaub ich nochmal anders (UTF-16 intern?).
Was dann über die Tastatur (OnKeyPress) rausgeht ist wieder ein anderes Kapitel, ich vermute das geht gar nicht Unicode-mässig.
Das ist ja als Char definiert. Vielleicht kann man da was Composen aber keine Ahnung.
Wollte nur sagen: Du bist nicht allein, ich kapier's auch nicht. ;-)
Ich vermute sogar, die Dev's blicken da auch nicht ganz durch. Aber das kann man ihnen nicht verübeln.

Das kennste ja bestimmt: http://wiki.lazarus.freepascal.org/LCL_ ... Support/de

Christian
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:

Beitrag von Christian »

Ja, kenn ich hilft aber nicht viel. Ich rede vom Linux im Windows läuft das ganze mit ISO... sehr gut. Aber bin momentan dran die Linux Ports meiner Applikationen aufzumöbeln und versteh dich voll und ganz mit deinen Aussagen zur LCL immer. ist im GTK ne Katastrophe. Alles was Thread basiert ist musst ich auch umschiffen weil das auch im fpc 2.3.1 immer noch nicht funktioniert sobald man Synchronize nur aufruft crasht die Applikation ich denk aber das hängt mehr an der LCL.
Jetzt hab ich das alles halbwegs am laufen es macht schon fast ein wenig Spass die Applikationen zu benutzen und dann kommt der Unicode Scheiss. nichtmal LANG="de_DE.ISO..." hilft.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Ich schau mir die Sache bald mal genauer an.
Was ich noch weiss: Beit GTK1 hängt es glaubs mit der GTK Konfiguration zusammen ob Unicode unterstützt wird. Wie man das wohl at runtime rauskriegt? ??
Bei mir hilft aber export LANG=de_CH schon um die Ansi Geschichte zu regeln (Umlaute). Auch unter GTK2. (siehe AnsiToUTF8)

Bezüglich Threads hatte ich weniger Probleme. Du hast aber schon cthreads in der uses der *.lpr ?

Christian
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:

Beitrag von Christian »

natürlich ist die cthreads drin die threads funktionieren auch halbwegs aber sobals ich Synchronize aufrufe ists vorbei. An anderer Stelle benutze ich TProcess sobald TProcess.Execute ausgeführt wird -> Crash.

Was erschreckend ist, ist das ich neuerdings Threads debuggen kann. Bisher ohne das mein X abgestürzt ist.

Iwe schon gesagt LANG=de_DE verändert das Problem behebt es aber nicht. In der IDE kann ich danach auch Umlaute eingeben aber im Prometheus nicht und im Audio X kann ich sogar mit UTF8 Umlaute eingeben.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Christian hat geschrieben:Alles was Thread basiert ist musst ich auch umschiffen weil das auch im fpc 2.3.1 immer noch nicht funktioniert sobald man Synchronize nur aufruft crasht die Applikation ich denk aber das hängt mehr an der LCL.

Auch wenn es nicht das Hauptthema ist, ich hab es schonmal unter GTK mit Threads probiert und sowohl die Threads als auch Synchronize hat ohne Probleme funktioniert, lediglich eine Unit mehr musste ich einbinden, dann wie gesagt - alles einwandfrei.

Um genau zu sein hatte ich nen TProcess in nem Thread und Synchronize auf die Hauptform.
Johannes

Christian
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:

Beitrag von Christian »

Welchen fpc hattest du verwendet ? Ich probiers jetzt mal mit 2.0.4 und 2.1.4
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Unter Linux hatte ich dazu 2.0.4.
Johannes

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Christian hat geschrieben:Iwe schon gesagt LANG=de_DE verändert das Problem behebt es aber nicht. In der IDE kann ich danach auch Umlaute eingeben aber im Prometheus nicht und im Audio X kann ich sogar mit UTF8 Umlaute eingeben.


Ich nehme an, du hast zu all diesen Programmen den Source Code.
Finden Sie den Unterschied! ;-)
Wenn du was rausgefunden hast, erzähl es uns. Interessiert mich auch.

Christian
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:

Beitrag von Christian »

Klar nur keine Lust mich da durchzuarbeiten :(
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Christian hat geschrieben:Klar nur keine Lust mich da durchzuarbeiten :(


Das wär aber interessant. Schau doch mal wenigstens die wichtigsten Unterschiede an.
Wird intern mit String oder WideString gearbeitet?
Gibt es bedingte Kompilierung in diesen Bereichen für Win32, GTK, GTK2 ?
Welche TextOut etc Funktionen werden benutzt?
Gibt es Konvertierungen (AnsiToUTF8, UnicodeToUTF8 etc.) ?
Einen Grund wird's schon geben.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich habe die Erfahrung gemacht, das es darin liegt, welche Schrift ausgewählt wurde. zumindest bei TextOut.
MFG
Michael Springwald

Antworten