Autor Beitrag
Tarry
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 213
Erhaltene Danke: 1



BeitragVerfasst: Fr 09.01.09 00:01 
Hi,
ich habe das Programm Alarm Clock by Tarry91" veroeffentlicht. (Klick mich)
Welches (bis vor einigen Tagen nur in Englisch verfuegbar war)

Nun habe ich vor circa einer Woche eine Email bekommen, von einem koreanischem User, welchem aufgefallen ist, dass die Strings, die von einem Edit Feld in eine ListView Komponente uebernomen werde, dort flasch dargestellt werden.
Nund hat er aber auch gesagt, dass alles funktioniert, was bedeutet, das die ListView mit den "richtigen" Strings weiterarbeitet / weitergibt. (Ich hoffe ihr wisst was ich meine)

Er hat mir folgenden Screenshot geschickt (siehe Anhang).

Ich hab echt ueberhaupt keine Ideem, was man da machen kann :(
Es draengt auch nciht, wirklich, das ja alles funktioniert, aber es intressiert mich einfach.

Danke schonmal,
Thomas
Einloggen, um Attachments anzusehen!
_________________
"Es gibt zwei Dinge, die unendlich sind. Das Universum und die menschliche Dummheit. Beim Universum bin ich mir noch nicht ganz sicher." -Albert Einstein
Biergeneral
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

WIN XP
Delphi 7 Ent., Delphi 2007 Ent., C/C++ (Eclipse)
BeitragVerfasst: So 11.01.09 23:55 
Welche Delphi Version nutzt du denn? An und für sich schreit das gerade zu nach Problemen, da koreanische Zeichen Unicode kodiert sind und die VCL bis Delphi2007 Ansi basiert ist ;-)

Ansonsten könntest du versuchen die Schriftart in eine entsprechende TrueType Schriftart umzuwandeln, die auch Unicode Zeichen unterstützt. MS Sans Serif z.B.
Tarry Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 213
Erhaltene Danke: 1



BeitragVerfasst: Mo 12.01.09 00:12 
user profile iconBiergeneral hat folgendes geschrieben Zum zitierten Posting springen:
Welche Delphi Version nutzt du denn? An und für sich schreit das gerade zu nach Problemen, da koreanische Zeichen Unicode kodiert sind und die VCL bis Delphi2007 Ansi basiert ist ;-)

Ansonsten könntest du versuchen die Schriftart in eine entsprechende TrueType Schriftart umzuwandeln, die auch Unicode Zeichen unterstützt. MS Sans Serif z.B.


Hi, Danke fuer die Antwort.
Ich benutzte Delphi 7.
Ich glaube aber nicht, dass e ander Schriftart liegt, da ich eine Uebersetzung anbiete und die koreanischen Zeichen an den Labels ohne Probleme dargestellt werden, die die gleiche Schriftart wie die ListView benutzten (Arial).

Wahrscheinlich ist es einfach so, wie du sagst, dass Delpi selbst nicht in der Lage ist... :(

Gruss
Thomas

_________________
"Es gibt zwei Dinge, die unendlich sind. Das Universum und die menschliche Dummheit. Beim Universum bin ich mir noch nicht ganz sicher." -Albert Einstein
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 12.01.09 00:31 
Ja, Delphi 7 unterstützt das noch nicht, die (komplette) Unicodeunterstützung ist erst neu in Delphi 2009 dabei.

Vorher gibt es die TNT Unicode Controls:
mh-nexus.de/en/tntunicodecontrols.php
Aber eine TListView ist da glaube ich nicht dabei.

Die von Delphi setzt auf der der Common Controls von Windows auf. Dort gibt es die Botschaft LVM_SETUNICODEFORMAT:
msdn.microsoft.com/e...ibrary/bb761218.aspx
Ob man damit in Delphi etwas anfangen kann bin ich nicht sicher, aber ich glaube das wird auch damit nicht funktionieren, zumindest nicht mit den Standardroutinen von Delphi.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Mo 12.01.09 00:50 
Sollte eigentlich auch ohne Unicode korrekt funktionieren (angenommen Font.CharSet ist DEFAULT_CHARSET). Die Strings werden dann multi-byte (MBCS) codiert. Nur wenn man mehrere Sprachen mischen will, keine verschiedenen Charactersets verwenden oder MBCS vermeiden will braucht man Unicode.

Du kannst ja mal dein Betriebssystem umschalten auf das koreanische Characterset für non-Unicode Programme und dem Problem nachgehen. Gewisse Localizer setzen dir beim Auswählen einer Sprache auch automatisch den richtigen Characterset auf deiner Delphi-Form.

Aber für internationale Software ist Unicode natürlich zweifelsfrei die bessere Lösung ;)

@jaenicke: Um in <Delphi2009 Unicode zu verwenden reicht es nicht, wenn ein Fensterhandle Unicode ist. Die WndProc muss bei der Übergabe von Zeichen (z.B. WM_SETTEXT/WM_GETTEXT) Unicodedaten verarbeiten, in der Klasse intern gespeicherte Texte alle in WideString sein und jeweils überall die xxxxW Prozeduren bei der WinAPI verwendet werden.

Falls TNT keine ListBox hat, kann man aber auch eine normale Listbox nehmen und die Strings im Custom Draw Event selbst zeichen (mit DrawTextW o.ä.). Allerdings müsstest du die Strings in der StringList als UTF-8 codiert halten und beim Zeichnen jeweils selbst decodieren, oder die Strings separat als WideString halten. Alternativ zu TNT gibt es sonst noch ElPack. Die Controls sind jedoch nicht ganz analog zu den VCL Komponenten und die Library ist alles andere als fehlerfrei.
Tarry Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 213
Erhaltene Danke: 1



BeitragVerfasst: Mi 14.01.09 22:19 
Hi,
danke fuer eure antworten :) (Bin leider erst jetzt dazu gekommen sie zu lesen :()
Ich werde das Font.CharSet ist DEFAULT_CHARSET mal ausprobieren, wenn es nicht funktioniert, soll es wohl einfach nicht sein :(
Ich lasse euch wissen, wenn ich es ausprobiert habe (Kann aber noch was dauern, da ich hier grade kein Delphi habe)

Gruss
Thomas

_________________
"Es gibt zwei Dinge, die unendlich sind. Das Universum und die menschliche Dummheit. Beim Universum bin ich mir noch nicht ganz sicher." -Albert Einstein