私の会社のメインアプリケーションは主にC++で書かれています(いくつかのDelphiコードとコンポーネントを使用)。RAD Studio 2007から2010にアップグレードして、次のリリースに向けて約1週間で開始します。このアップグレードをスムーズに進めるために知っておくべきことは何ですか?
私がこれまで考えてきたポイントは次のとおりです。
Unicode。これは本当に複雑に見えます。私たちのアプリには、std::string-sとAnsiString-sの恐ろしい組み合わせが含まれています。これについては、「wstringはUnicodeStringで可能なすべてのものを保持できるので、検索/置換を行うだけでよいか」、「すべてのC ++文字列タイプを完全に避けてUnicodeStringを使用する必要があるか」、「できますか」など、多くの質問があります。既存の
.HPPsイベントハンドラーメソッドのプロトタイプはコンパイラーによってAnsiStringに変換されましたが、すべてのイベントハンドラーを文字列を使用するように変更します。 Unicode文字列」など。これに関する洞察をいただければ幸いです。下位互換性も必要です。私たちのアプリは、現在文字列をバイトの配列として格納している独自のバイナリタプル形式を使用しています。これをアップグレードして古いファイルを読み取り、おそらく新しいUnicode文字列も書き込む必要があります。バイナリ形式に埋め込まれたUnicode文字列を処理するにはどうすればよいですか?UnicodeStringをバイトの配列に向けることができる一般的な方法はありますか?それは元々ANSIバイトまたはUnicodeとして記述されていて、それらが何であるかを理解しますか?
サードパーティのコンポーネント。主にSpTBXを使用しており、互換性があるようです。
プロジェクトのアップグレード。Codegearフォーラムの標準的なアドバイスは、アップグレード時にすべてのプロジェクトファイルを手動で再作成することのようです。これは非常に多くの作業です(メインアプリの7つのプロジェクト(主にlibs)に加えて、半ダースのDLL、多くのファイル)。これを自動化する方法はありますか?
リンカーはどのように見えますか?リンカがランダムにクラッシュしたり、リソースが不足したりすることで、従来は多くの問題が発生していましたが、2007年には大幅に改善されました。これが、メインアプリケーションが複数のライブラリに分割される理由の1つです。リンカはできません(うまくいけば、「できませんでした。しかし、今はできますか?)それ以外の方法で処理できます。
新しいタイプライブラリエディタとフォーマットがあることを知っています(IDL、つまりテキストを格納し、TLBを動的に生成しますか?)これは、TLBを使用した既存のCOMプロジェクトのアップグレードをどの程度うまく処理しますか?C++アプリケーションに組み込まれているDelphiコードとTLBがあります。
他に考慮すべき、または知っておくべきことはありますか?
見つけた:
- 2007年と2010年の共存。以前に同じマシンで2006年と2007年に問題が発生したことがあるため、この回答を信頼できるかどうかはわかりません。
- Unicodeに関するいくつかの回答:2009年の文字列の記述とUnicodeテキストへの一般的な移行ですが、懸念事項に対する回答はなく、C++Builder固有の部分もありません。
- 2009にアップグレードするガイドラインに関するこの質問ですが、回答は役に立ちますが、上記のUnicode関連のすべての問題に回答しているわけではありません。
- [編集:追加]RADStudioでのUnicodeのCodegearドキュメントとUnicodeに変換する際の注意事項