Delphi2010への移行

解決


小豚丸  2011-01-02 21:27:25  No: 39783  IP: 192.*.*.*

1.Delphi2007のソースをDelphi2010へ移行するつもりですが、
    変数宣言の PChar -> PAnsiChar 
    変数宣言の String -> AnsiString 
    型キャスト PChar -> PAnsiChar 
    型キャスト String -> AnsiString 
    以外になにか注意点ありますでしょうか?

2.全てのStringをAnsiStringに移行する必要は本当にありますか?
    VCL関数の多くの引数の型はStringだし....

御存知な方、ぜひご教授ください。

編集 削除
igy  2011-01-02 21:50:48  No: 39784  IP: 192.*.*.*

>全てのStringをAnsiStringに移行する必要は本当にありますか?

ちなみに、Unicode対応には、しないのですか?
# しないのであれば、Delphi2007のままでもよいような気がしますが・・

編集 削除
かず  2011-01-02 22:00:54  No: 39785  IP: 192.*.*.*

Delphi2007からDelphi2010への移行には、1のようにすべて変えなくても大丈夫です。ここはAnsiで処理しなければいない箇所だけ1のようにかきなおします。

1以外に文字列処理が影響します。特にCopyなどバイト単位で扱うので、日本語文字の処理は文字数の扱いにします。

SizeOf(Char) は 1として扱うというのがあります。

厄介なのはフリーのコンポーネントがUnicodeに対応しているかどうかです。

わたしは仕事、趣味で何本か移行しましたが、ほとんど機械的に移行が可能です。自分が理解しないで、ネットなどからコピーした場合は、移行できずにいるプロジェクトもあります。

最初にコンパイルが通るか、通らなければ上記を確認
コンパイルできたアプリの動作確認、結果が悪ければその部分を見直す。

編集 削除
経験ですが  2011-01-03 14:08:18  No: 39786  IP: 192.*.*.*

かなり大きなプログラムも含めて、20本ほど2007⇒2010の移行をしました。
経験ですが、標準のコンポーネントだけを使っているぶんには、大半はDelphiに任せて「機械的に移行」できます(てきているように見えます。)。しかし、たとえずDbGridのタイトルをクリックしたエベントが、2010では無視されるというようなことがあります。そのようなときには、コントロールを改めて2010のツールパレットから張り替えるとうまくいくということが何度かありました。
ためしてみてください。

編集 削除
小豚丸  2011-01-03 21:14:44  No: 39787  IP: 192.*.*.*

大変参考になりました。

ちょっと試してみます、うまく動かない場合は、再度コンポを貼り直して
みます。

ありがとうございました。

編集 削除