前回書いたとおり、C++BuilderXEを使い始めました。C++Builderは初代から使っていますが、5でバージョンアップをストップしていたので、6,2006,2007,2009,2010の5つスキップとなります。しかし、さすがにこれだけ飛ばしてアップすると変更量が多いです。
一番大きい変更点であるUnicode対応は単純作業なだけですが、DelphiだとANSI-Unicode間の暗黙的文字変換をコンパイラレベルで警告出してくれるのに、C++Builderだと検知する方法が用意されていないようです。仕方ないので、VCLのヘッダファイルを直接書き換えて、暗黙的変換が行われる関数をコメントアウトし、コンパイルエラーになる箇所を片っ端から書き換えてソースコード全体をUnicode対応にしました。これで無駄な文字コード変換もほとんど行われません。しかし、Unicode化はOSやVCL側の都合だけで、mqoを始めとしてほとんどのファイル形式がファイル名やオブジェクト名などでANSIしか取り扱えないので、あまり意味がないんですよね・・・。
次に大きい点が本体以外のコンポーネントの対応です。TEditorは本家以外の有志によってUnicode対応が行われましたが、C++Builder2009以降での使用報告が見当たりません。手元でビルドするとエラーが結構出たりして、色々いじった結果一応ビルドは通るようになったはものの、なんか挙動がおかしいんですよね。これについては今後さらに調査予定ですが、TEditorにこだわる理由もあまりないので、SynEditなどに移行してもいいかも。SynEditだとMPLのライセンスがちょっと嫌ですが。
周辺ライブラリを含めてUnicode対応が完了するとビルドは通って動くようになったのですが、コンパイラの最適化レベルは10年前からあまり変わっていないようです。一部アセンブラのコードが通らない箇所をとりあえずCで実装してビルドしたコードで比較すると、約3%速度が落ちたので、ほぼ同等とみて良さそうです。でもSSEが使えるようになったので、最終的には高速化できそうかも?
コンパイラやVCLに起因すると考えられる不具合は、今のところは終了時に原因不明のエラーが発生することがあるくらいですが、一度全機能チェックが必要かもしれません。
統合環境自体が結構バギーなのが気になります。デバッグ時におかしくなったり、プロジェクトの設定が壊れたり、その他色々…。実用にならないレベルとかではないものの、決して磐石ではなかったVer5と比べても安定性はいまいちという印象が強いです。便利になった機能も多いんですが。
と、以上色々書いてみて、今のところまだ不安要素を払拭できていません。生成されたexeファイルのサイズが倍近くになったのも気になります。機能改良を棚上げして、移行に結構時間費やした割には・・・という感じです。もし2ヶ月くらい毎日ずっと取り組める時間が確保できれば、VisualC++/Qtへの移行も検討しますが、休日のみで同じことしようとするとそれだけで2年近くはかかりそうなので、現実解としてはC++Builderを使い続けるのが一番です。最終的にはXEに移行してよかったと言えるようになればと思います。
既知の問題点を解消して安定性が確保できれば、XEでビルドした最初のリリースをAlpha6として公開予定です。
2011年06月12日
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/45935261
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/45935261
この記事へのトラックバック
世間のことが疎いもので気付いていませんでした。
Delphi2009向けにTEditorを移植したのは私なんですが、当時C++Builder2009にインストール方のbolg記事のURLを貼っておきます。
http://dhive.jp/blog/yama/?p=1298
私のほうはTEditorを移植したもののモデラ開発のほうはいまだDelphi7を使ってます(MarbleCLAYの作者です)。
今は余裕ができたらQtに移行するつもりで色々調べてます。
一応RAD Studio2010は持っています
わざわざコメントありがとうございます。
この記事書いてから全然触れてないのですが、
RadStudioでないC++Builder単体製品だと一部ないコンポーネントがあったりして、
無理やりビルドが通るよう修正した箇所があるで、
そういうのが何か影響してるのかもしれません。
時間があるときに調べ直すつもりなので、
わかったことがあればまた報告します。