Tstringfieldを微調整してDelphiのTwidestringfieldのように働くことは可能ですか?
質問
Delphi 2009とInterbaseでUnicodeを使用したいと考えていますが、Win1252からUnicode_FSSまたはUTF8にエンコードを切り替えるには、最初にTstringfieldのすべてのインスタンスをすべてのデータモジュールのTwidestringfieldに置き換える必要があります。約60のデータモジュールの場合、1つの週末にこれを行うことはできません。移行戦略の2つのオプションのみが表示されます。
- 「予想:Twidestringfield」エラーをトリガーせずに既存のTStringfieldフィールドを使用できる回避策を見つける
また
- 文字列タイプの競合を回避するために、すべての永続的なフィールドを削除します
私が知る限り、永続的なデータベースフィールドのフィールドタイプは、ある種のクラスレジストリに登録されています。これを使用して、Unicode_FSSまたはUTF8エンコードを備えたインターベース文字列でTStringfieldがOKであると信じさせることができますか?
または、どちらの場合もTstringfieldで動作する商用Dbexpressドライバーを使用できますか?
私の関連する質問も参照してください: Delphi dbexpressおよびInterbase:UTF8の移行ステップとリスク?
更新:Tstringfieldのすべての発生をすべてのDFMファイルとPASファイルでTwidestringfieldに置き換えた後、Twidestringfieldsの「サイズ」プロパティ値に4つ(UTF8を使用している場合)を約100か所で掛ける必要があることがわかりました。だから私はDFMSを修正するために手動作業を減らす方法のために賞金を始めます
解決
Unicode文字にTstringfieldを使用するとトラブルに巻き込まれ、基本的にdbexpressドライバーで文字列を終了します。 Twidestringfieldを使用すると、dbexpressでPwideCharを使用するため、ドライバーは真のUnicode CodePointsを期待しています。
簡単な方法はありません、私は恐れています。
他のヒント
Sergey A Kryukov、「Unicode Controls:VCLは何ができるのでしょうか?」、The Delphi Magazine、116(2005年4月)、p。 33-43(ソースコード)デルファイ誌
Unfortunately, the text of the original article is not freely available, but ask me if you have questions.