Tstringfieldを微調整してDelphiのTwidestringfieldのように働くことは可能ですか?

StackOverflow https://stackoverflow.com/questions/2500517

質問

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.
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top