Registriert: Mo Jan 20, 2003 20:10 Beiträge: 424 Wohnort: nähe Starnberg
Hallo,
ein seit 1997 bestehendes Projekt, damals Delphi 1, ist seit langem auf auf Win32 umgestellt worden. Dabei werden intern zu 99% der Typ String für die Verwaltung von Zeichenketten verwendet.
Nun zeichnet sich ab, das wir Sonderzeichen aus dem kyrilischen, baltischen und asiatischen Raum verwenden müßen. Die Daten werden über direkte SQL - Befehle manipuliert, also es werden kaum DB-Aware Komponenten verwendet.
Was muss, neben der Änderung der Standardsteuerelemente in Unicode - Steuerelemente, noch alles angepasst werden? Muß ich jetzt jeden String in WideString umändern?
Registriert: So Feb 06, 2005 17:29 Beiträge: 187
Programmiersprache: C, C++
Ja, dass würde mich auch interessieren.
Ich hab mir einen kleinen Vokabeltrainer fürs Chinesisch geschrieben. Leider funktionierte Unicode nicht, auch nicht mit Widestring Ich hab das ganze dann kurzerhand in Net gemacht, weil dort auch intern Unicode verwendet wird.
Wie gesagt, die Lösung für dieses Problem würde ich aber trotzdem gerne wissen (Wenn ich dann z.B. Arabisch lerne )
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Kenne mich damit nicht wirklich gut aus aber nach meinem Wissenstand muss man überall wo Unicode zum Einsatz kommen soll auch Widestrings benutzen. Und auch die entsprechenden API Methoden mit der Endung W.
Die Standarddelphicontrols können wohl gar keine Unicodes. Dazu müsste man sich selber welche schreiben oder bereits geschriebene benutzen. Welche Unicode unterstützen weiß ich nicht.
Finalspace hat damit aber schon mal recht viel in seinem Player gemacht.
PS: Mike Lischke hat auch eine Unicodelibrary geschrieben. Könnte ganz nützlich sein.
Also ich kenn mich mit dem Unicode unter Delphi aus.
Hatte schon öfters das vergnügen damit zu basteln.
Wenn man 100% Unicode unterstützung haben will, sollte man sich die TNT Unicode Controls komponenten laden und nur noch diese einsetzten. Da hat man support für echte Widestrings (UTF-16).
Das lesen/schreiben ist dann nur noch abhängig von der API welche ihr benutzt.
Wenn eure SQL Datenbank widestrings zurückliefern kann ist das ganze stressfrei.
Wenn da aber nur AnsiStrings rauskommen und intern aber in UTF-8 kodiert ist dann müsst ihr beim einlesen das ganze von AnsiString nach WideString konvertieren.
Falls eure DB nur AnsiStrings kann dann müsst ihr anderst vorgehen, dann müsst ihr selbst nach UTF-8 konvertieren und wieder back zu WideString.
UTF-8 = ASCII Zeichen Fake Unicode
UTF-16 = 16 byte pro Unicode char
UTF-32 = 32 byte pro unicode char
Registriert: Mo Jan 20, 2003 20:10 Beiträge: 424 Wohnort: nähe Starnberg
An die TnT - Controls habe ich auch gedacht, dazu wird TVirtualTreeView als Ersatz für die DBGrid - Komponenten verwendet werden. Der Rest heißt dann manuelle Konvertierung. Leider wird das keine kleine Geschichte sein, mit den Fremdkomponenten, alle im Source vorhanden, sind rund 1Mio - Zeilen nun auf Unicode zu prüfen. Das wird wohl eine harte Nuss werden.
Naja, dann kann gleich ein Code-Cleanup gemacht werden, so schlägt man zwei Fliegen mit einer Klappe.
Jop, ich kann nur empfehlen von anfang an an Unicode zu denken.
Bei dem Xenorate 3 projekt benutzt ich Unicode an den Stellen wo ich es denke es gebraucht zu werden.
Wenn ich nen neues programm anfange, dann denk ich dran das es mind. UTF-8 tauglich ist.
Das schwierige an unicode wenn man alles selber machen will, und nicht TNT unicode controls welche unter FreePascal eh nich gehen ist nur das eigene direkte schreiben in Edit boxen, Memos usw, also da wo man selber was einträgt.
Wenns nur ums lesen und anzeigen geht dann is das easy.
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.