Einzelnen Beitrag anzeigen

FlatCoder

Registriert seit: 18. Mai 2005
12 Beiträge
 
Delphi 2007 Professional
 
#1

Migration von Firebirdprojekt (Delphi 2006 nach delphi 2009)

  Alt 6. Okt 2009, 10:38
Datenbank: Firebird • Version: 2.1 • Zugriff über: UIBComponents
Hallo zusammen,

ich weis, es wurde schon so oft über UTF8 und Konvertierungsmöglichkeiten diskutiert.
Ich weis auch nicht, ob mein Fall neu ist oder ob ich bei Delphi 2006 bleioben MUSS weil es einfach nicht mehr funktioniert:

In einem betrieblichen Projekt habe ich UNICODE Zeichen nach Firebird 2.1 gespeichert.
Dazu verwendete ich eine Anwendung die in Delphi 2006 geschrieben war.
Gespeichert habe ich mit den TNT Komponenten (da WideString) und der Funktion UTF8Encode(<Variable>).
Dies ist auch wunderbar und mein FirebirdMaestro stellt mir alles sauber dar.

Zum dekodieren benutzte ich die Methode UTF8Decode(<Feldname>), um wieder alles in der TNTEdi darzustellen.

Nun bin ich vor einer ganzen Weile auf Delphi 2009 umgestiegen und die TNT Komponenten sollen ja um Himmels
Willen nicht mehr verwendet werden (Wegen WideString usw.)

Nun versuche ich, die Schriftzeichen wieder auszulesen und verwende (da nicht anders möglich) die Funktion:
UTF8ToString(<Feld>)

Die meisten Felder übernimmt er auch wunderbar und ich freute mich schon bis ich sah:
Bestimmte Felder, die ebenfalls UNICODE_FFS Formatiert sind (in Firebird) und EBENFALLS
mit UTF8Encode gespeichert wurden, werden fehlerhaft eingelesen. Es werden einfach Zeichen VERSCHLUCKT.
Ich weis echt nicht mehr weiter...
In Delphi 2006 macht er es ANSTANDSLOS mit der Funktion UTF8Decode. In Delphi 2009 tritt das genannte problem auf,
aber man soll ja UTF8Decode nicht mehr nehmen. Aber egal ob ich UTF8Decode oder UTF8ToString verwende,
Delphi 2009 verschluckt bei manchen Feldern einfach die Zeichen...

Wäre nett wenn jemand einen Tipp hätte, ansonsten arbeite ich beim alten Projekt mit der "alten" Version und neue
Projekte werden dann ohnehin mit Delphi 2009 gemacht, was aber laut Updatelizenzrecht nicht sein darf...
Die ganze Anwendung mit über 100.000 Programmzeilen möchte ich nicht unbedingt komplett von neuem beginnen
und die Datenbank ist mittlerweile so groß geworden, dass ich da nicht einfach irgendwie "migrieren" kann.

Naja bin gespannt auf eure Antworten.
Benötigt ihr Zeichenbeispuele und die Ergebnisse? Wenn ja lasst es mich wissen.

Bis dann

Ingo
  Mit Zitat antworten Zitat