?ステップアップグレードのススメ
- ?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)ともに、読み書き正常でした。