アプリケーションでTreeNTコンポーネントを使用しています。アプリケーションを XE2 に移行する作業を行っています。コンポーネントを XE2 で再コンパイルしました。実行時に、ウィンドウにノード キャプションが表示されません。
サードパーティ コンポーネントを手動で XE2 に移行するためのヒントを教えてください。
アプリケーションでTreeNTコンポーネントを使用しています。アプリケーションを XE2 に移行する作業を行っています。コンポーネントを XE2 で再コンパイルしました。実行時に、ウィンドウにノード キャプションが表示されません。
サードパーティ コンポーネントを手動で XE2 に移行するためのヒントを教えてください。
Delphi には Unicode に関する記事がたくさんあります コンポーネントの移植は、アプリケーションの移植と同じです。それらを見つけて読んでください。本当にそうします。
特に {$T-} モードで作業している場合は、PChar -> PAnsiChar/PWideChar の曖昧さに見舞われます。コンパイル時にポインタが入力されていることを確認してください。
私のmove
手順でバッファーを割り当てたり、生データを移動したりするときに、Sizeof(char) を乗算しなかった場合、ヒットするでしょう。
あいまいな型 (char、pchar、string) を検索して削除し、コンテキストに応じて WideChar/PWideChar/UnicodeString または AnsiChar/PAnsiChar/AnsiString に明示的に置き換えたほうがよいでしょう。したがって、型遷移が発生する可能性がある場所を学習し、おそらくコンパイラに型チェックをさせることができます。ShortStirng 型 ( string[255]
TreeNT で使用) は、定義上、非 Unicode です。アクセスの際は各所お気をつけください。
Windows DLL から直接インポートし、Windows 関数名に "A" を指定すると、問題が発生します。これにより、予期しない UTF-16 データを取得する ANSI 関数が簡単に発生する可能性があります。
誰かがすでにそれを行っているかどうかを検索してみてください。たとえばhttp://code.google.com/p/keynote-nf/source/browse/trunk/3rd_party/treent/TreeNT.pas - しかし、これは Delphi RTL の Unicode の前の 2007 年に終了しました。