Frage

Wir möchten Unicode mit Delphi 2009 und Interbase verwenden und festgestellt, dass wir zuerst alle Instanzen von Tstringfield durch Twidestringfield in allen Datamodules ersetzen müssen, um die Zeichenkodierung von Win1252 auf Unicode_FSS oder UTF8 zu wechseln. Für rund 60 Datamodulen können wir dies nicht einfach über ein Wochenende tun. Ich kann nur zwei Optionen für eine Migrationsstrategie sehen:

  • Finden Sie eine Problemumgehung, mit der die vorhandenen Tstringfield -Felder verwendet werden können, ohne den Fehler "Erwartung: Twidestringfield" auszulösen

oder

  • Entfernen Sie alle persistenten Felder, um den Konflikt vom Streichentyp zu vermeiden

Soweit ich kenne, sind die Feldtypen für persistente Datenbankfelder in einer Art Klassenregistrierung registriert. Könnten wir dies verwenden, um Delphi zu glauben, dass ein Tstringfield für eine Interbase -Zeichenspalte mit Unicode_FSS oder UTF8 -Codierung in Ordnung ist?

Oder können wir einen kommerziellen DBexpress -Treiber verwenden, der in beiden Fällen mit Tstringfield zusammenarbeitet?

Siehe auch meine verwandte Frage: Delphi Dbexpress und Interbase: UTF8 -Migrationsschritte und -risiken?


UPDATE: Nachdem wir alle Vorschläge von Tstringfield durch Twidestringfield in allen DFM- und PAS -Dateien ersetzt haben, stellten wir fest, dass es jetzt auch erforderlich ist, den Eigenschaftswert der Twidestringfields mit vier (wenn wir UTF8) an rund 100 Stellen multiplizieren müssen. Daher beginne ich mit einem Kopfgeld, um die manuelle Arbeit zur Behebung der DFMs zu reduzieren

War es hilfreich?

Lösung

Wenn Sie Tstringfield für Unicode -Zeichen verwenden, werden Sie in Schwierigkeiten geraten. Es wird $ 00 enthalten, wobei die Zeichenfolge beispielsweise mit DBexpress -Treibern beendet wird, da diese P (ANSI) Char Strings akzeptieren. Die Verwendung von Twidestringfield verwendet Pwidechar in DBexpress, sodass der Fahrer echte Unicode -Codepoints erwartet.

Ich fürchte, es gibt keinen einfachen Ausweg.

Andere Tipps

Sergey A Kryukov, "Unicode Controls: Was kann VCL tun?", The Delphi Magazine, 116 (April 2005), p. 33-43 (Quellcode) Das Delphi -Magazin

Unfortunately, the text of the original article is not freely available, but ask me if you have questions.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top