Delphi 2010 + Unicode

 ステップアップグレードのススメ

  •  Win9x対応最終版 → Delphi 7
  • Ansi対応最終版 → Delphi 2007
  • Unicode 対応版 → Delphi 2009

Delphi 2009ではじめるUnicodeアプリケーション – 既存コード移行のポイント – より

D7 > DXE に上げようとしたけど、いろいろと互換性に躓いたので、
いったん、D2010に上げようとしたんだけども、

型の修正は、まーそれなりに、置換するだけでよかったんだけども、、、

  • String > AnsiString
  • array [0.. 1 -1] of Char > array [0.. 1 -1] of AnsiChar

今回、Sqlserver2008 のText型で、どっぷり1年悩まされた・・・

 nTextなら、と思ったけど、結果は同じ。

varcharは、普通に表示されるんだけど、
text型が、途中で見切れる。(ちょうど半分)

原因は、絶対Unicode

日本には、ずばりの回答がなく、
これだけは、英語圏の案件を調べても、マルチバイト文字なだけに、
事例がなく、困り果てていたが、

やっところさ、糸口が・・・

 TMemoField > TWideMemoFIeld

たった、これだけ・・・

BlobTypeは、ftMemoのままで、おk

ながかった・・・。ようやく・・・

追伸。
Sqlserver側の型をText > nTextにもしないと、だめみたいです。
あと、TMemoFieldのまま、nTextを読み込んでも、文字化けします。

追伸。
ntext text、および image の各データ型は、将来のバージョンの Microsoft SQL Server で削除される予定です。
代わりに、nvarchar(max)varchar(max)varbinary(max) を使用してください。
http://msdn.microsoft.com/ja-jp/library/ms187993.aspx より

試してみたところ、Delphi7で作ったソフトからも、
nText、nvarchar(max)ともに、読み書き正常でした。

-