<< 2024/04 >> | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
|
Delphi 2007 R2 から Delphi XE2 へのマイグレーション
12/11/25 18:56 / 開発メモ
PMail Server2 の 64bit化の為、今まで開発に利用してきた Delphi 2007 から Delphi XE2 へのマイグレーションを行っています。(2007 で 64bitコンパイルできないから)
(間に Delphi 2009 や Delphi 2010 がありましたが、スルーしました。インストールしただけで殆ど利用していなかったり・・・) Delphi 2007 とそれ以降の版で一番大きく違うのは、文字列の扱いが大幅に変更されています。 Windows の内部処理が Unicode になっていますので、当然と言えば当然なんですが、2007 までは Ansi(SJIS) だった文字列が Unicode に完全に置き換えられています。 普通のアプリなんかは、深く考えずにリコンパイル出来ますし、DB なんかの扱いも SJIS では無く Unicode に変更してやれば大抵動く訳ですが。 うちの場合、非常に困ったことに。 私は通信関連のソフトを作ることが多いんですが、通信世界は Ansi なんですよ。Unicode で通信することは殆ど無い訳です。 今まで作ってきた膨大な量のライブラリは Ansi で作っていますので、これを Unicode に対応・・・すぐに出来る訳ないです。(^-^; System.AnsiStrings というライブラリを組み込むことによって Ansi の扱いはある程度出来るんですが、完全では無いので IntToStr とか、割と良く使うにも関わらず対応していない Common ライブラリが大量に。 (IntToStrの帰り値は String なんですが、実際の中身は 2007 では Ansi String, XE2 では Unicode String になります。JavaScript でバージョンによって int の中身が Int になったり、WORD になったりするレベルのインパクトです。なんでこんな言語仕様にしたのか・・・) PMail Server2 を試しにリコンパイルしてみた所、数百のエラーと数千の警告が発生 orz 取りあえず数百発生しているエラーを悉く潰して、コンパイルが通った所で実行してみましたが、まともに動作しません。 1個づつ関数レベルで動作確認しつつ移植作業を行っていますが、更に事情があり、32bit版は Delphi 2007 で継続して開発、64bit版は Delphi XE2 で開発を行いたいと考えていますので(XE2 が作る EXE は大きすぎます・・・)同一ソースで Ansi と Unicode を通したいのです。 最終的に取った方法は、条件コンパイルで Ansi / Unicode を切り替えて同一コードで通す茨の道です。(^-^; ということで、自作ライブラリで IntToAnsiStr なんて関数を作って、IFDEF VER185 を大量に書いています。 function AIntToStr(Value: Integer):AnsiString; begin {$IFDEF VER185} ← Delphi 2007 なら以下を通過 Result:=IntToStr(Value); ←標準関数 {$ELSE} Result:=IntToAnsiStr(Value); ←自作関数(XE2用) {$ENDIF} end; 当然、親コードでは IntToStr() と書いている箇所を全て AIntToStr() に置換する作業が待っていますが。 あとは、TStringList の代わりに TAnsiStringList とか。 (Delphi やっている人じゃないと意味がわからんですね) バグを含みやすい方法なんですが、現状としてはこの方法しか無いかなぁ、と。 最終的には全て Unicode で書き直す必要が出てくるとは思いますが、当面はこの方法で凌ごうと思います。 [更新日付:2012/11/25 18:56:09]
トラックバックを見る(0) Log Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+sl+8c81eb95bf3d699acfc241531607efe826e2e583] TB Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+tb+8c81eb95bf3d699acfc241531607efe826e2e583] 記事へのコメント コメントはありません |
@AKISoftOfficialをフォロー
掲示板 サポートBBS PMailServer BBS アクセスの多い記事
最新記事(カテゴリ別)
PMailServer2 Version 2.53 をリリースしました。
04/08 00:50 フリー版からの製品版移行時の MTA 並列数について 02/17 23:52 メールサーバーの開発を始めて20年 02/07 21:46 PMailServer2 Version 2.52a をリリースしました。 12/26 14:02 PMailServer2 Version 2.52 をリリースしました。 10/01 10:48 PMailServer2 Version 2.51b をリリースしました。 09/19 01:43 PMailServer2 Version 2.51b(仮) Memo 09/12 00:33 PMailServer2 Version 2.51a をリリース、及び脆弱性についてのお知らせ 09/05 01:15 PMailServer2 Version 2.51a Memo 08/21 00:48 アドレスV125(K5)のスターターリレーの交換 08/04 10:10 最新コメント
コメントはありません
UUアクセス数
今日は 77回
昨日は 249回 トータル 304603回 3ヶ月記事別ランキング
プロフィール
Z80から68系、8086系を経由して
Pascalに移行。現在は Delphiをメインに C/C#も囓ってみたり。 「無い物は作れ」の精神で年がら年中なにかを作っています。 すぐ自前で作りたがるので無駄に工数が上がったりして自爆してみたりもします。 好きな物は麺類とお煎餅 Blom内検索
BLOM Version 1.39 ©2007-15 A.K.I Software all rights reserved. |