6

Delphi XE2 で Delphi 7 プロジェクトを開き、プロジェクト オプションを開くと、次のエラーが表示されます。

"Unable to set Icon: Cannot open file "........\AppName_Icon.ico".
The system cannot find the file specified".

また、プロジェクトのバージョン情報が欠落していることにも気付きました。Delphi 7 プロジェクトには、MAINICON とバージョン情報が格納された .Res ファイルがあります。Delphi XE2 がこの .Res ファイルを使用して、MAINICON およびバージョン情報を取得できないのはなぜですか。

また、XE2 でアプリケーションをコンパイルしようとすると、エラーが発生します -

[BRCC32 Error] MtxReq.vrc(2): file not found: MtxReq_Icon.ico

MTXReq.vrc ファイル(新規ファイル)が作成され、MtxReq.res ファイルが削除されます。

なぜこうなった?プロジェクトのアイコンとバージョンの設定を .res ファイルから失いたくありません。

XE2 に強制的に .res ファイルを使用させ、削除しないようにする方法はありますか?

どんな助けでも大歓迎です。


申し訳ありませんが、まだコメントを投稿することはできません (より多くの再配置ポイントが必要です) ...

Warren - ここにあなたの質問への回答があります (.dproj ファイルを削除して .dpr のみを保持した方が速かったのではないでしょうか?)

.dproj、.dproj.local を削除しました XE2 で .dpr を開き、.dproj ファイルを再作成しました。.res からアイコンを取り戻しましたが、プロジェクトのバージョン情報を失いました。ファイル バージョンと製品バージョンの情報のみが移行されましたが、他のすべてのバージョン情報が失われました。(これは、デフォルトのマニフェスト ファイルによるものです)。次に、ソリューションのステップ 1 で説明したことを試しました。メモ帳で .dproj ファイルを開き、下のタグ エントリを削除して .dproj ファイルを再度開いたところ、すべてのバージョン情報が復元されました。ここでの問題は、$(BDS)\bin\default_app.manifest です。また、バージョン情報が .dproj ファイルの タグの下の タグに保存されていることに気付きました。デフォルトのマニフェスト エントリを削除すると、IDE は .dproj ファイルからバージョン キー情報を正しく取得します。

したがって、基本的に .dpr ファイルを削除することで、.ico ファイルを抽出してプロジェクトに追加する手順をスキップしましたが、新しく作成した .proj ファイルを編集し、デフォルト マニフェストのエントリを削除してバージョン情報を取得する必要がありました。(別の解決策は、手動でバージョン情報を追加してプロジェクトを保存することでした。私はこれを試しませんでした)

4

3 に答える 3

13

Update 2015 : .DPROJ ファイルを手動で慎重に再作成するという Remy のアイデアは優れたアドバイスであり、最初に検討する必要があります。

XE2 より前のバージョンの Delphi では、コンパイル プロセスでリソース ファイルを INPUT および OUTPUT として使用していました。たとえば、Delphi 7 プロジェクト アイコンは、「delphi xe2 で使用したい」その .res ファイルに埋め込まれていますが、これは Delphi 7 では問題であり、XE2 では完全に不可能です。代わりに、実行可能ファイルと同じように、.res ファイルを純粋な出力アーティファクトとして扱うようになりました。わざわざ .res ファイルをバージョン管理にチェックインする必要はありません。また、.res ファイルがアイコンを永続的に保存する場所であると偽ろうとしないでください。これは、常にそうあるべきだったように、コンパイラによって自動的に生成される出力ファイルです。

あなたが現代の開発者であれば、Delphi 7 の古いやり方に悩まされているかもしれません (確かに私も悩まされていました)。なぜなら、バージョン管理のために何をすべきかという興味深く解決不可能な質問があるからです: .RES ファイルをチェックインしますか?あなたじゃない?どちらのアプローチにも欠点があり、.RES ファイルが現在 XE2 でのみ出力アーティファクトになっているという事実が最善です。だから、それと一緒に暮らすことを学びましょう。

XE2 が PC だけでなく Mac のアイコンもサポートするようになったので、別の方法で処理する必要があり、これをクリーンアップしました。これが、.ICO ファイルで発生している問題の原因です。まったく同じエラーが表示されましたが、それを無視して、アイコンを別の方法で変換した後にプロジェクトに追加し直しました。

Delphi 7 プロジェクト (.dpr および .cfg) を Delphi XE2 に変換することは、さまざまなレベルの .dproj ファイル間の変換ほど大きな問題ではありません。Delphi 2005、2007、2009、2010 以降の各バージョンが実装されています。 dproj 形式の変更。これらのプロジェクトを変換する際に問題が発生した場合、私は Remy が提案するようなことはしません。時間の無駄だからです。私がしていることは、DPROJ を削除し、.dpr ファイルからのみ変換できるようにすることです。
しかし、ゼロから始めるという Remy のアドバイスには、プロジェクトのレイアウトを簡素化できるなど、多くの利点があります。

とにかく、これがあなたがすることです:

  1. エラーを無視します。
  2. 自分を投影するアイコンを追加します。
  3. .res ファイルの削除について心配する必要はありません。これは意図的なものであり、正当な理由によるものです。必要に応じて新しいものを作成します。ディスク上の .ico ファイルのファイル名は、XE2 .dproj ファイルの内容を使用して読み取られ、本来あるべきように .res ファイルにコンパイルされます。
于 2012-08-11T19:17:31.987 に答える
5

いつものことですが、IDE にプロジェクトを古いバージョンから新しいバージョンに変換させないでください。変換が正しく機能することはめったにありません。常に新しい IDE で新しいプロジェクトを作成し、必要に応じて既存のソース ファイルを追加する必要があります。

于 2012-08-10T20:17:04.937 に答える
1

ご意見やご提案をいただきありがとうございます。

投稿を送信した後、次の手順を実行して .ico の問題と、欠落しているバージョンの問題/バージョン情報の問題を解決しました。

ステップ1。.dProj ファイルを編集し、タグの下の default_app.manifest 関連エントリへの参照を削除しました (私のプロジェクト プラットフォームは 32 ビットです)。名前空間 System.Win;Data.Win;Datasnap.Win;Web に関連するタグを除いて、この下のすべてのタグを削除しました。 Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)

これがないと、アプリケーションは常にバージョン情報を 1.0.0.0 として表示し、指定した他のすべてを無視していました。

(これが正しい手順かどうかはわかりませんが、バージョン情報の問題は解決しました。これには、より簡単な/別の解決策があるかもしれません...)

ステップ 2.古い .res ファイルから ico を抽出し、名前を付けて、その .ico ファイルを [プロジェクト オプション] からプロジェクトに追加しました。物理的な .ico ファイルはプロジェクト フォルダーであり、ソース管理 (私の場合は VSS) でチェックされます。

これらの 2 つの手順により、必要なものが得られ、バージョン番号を変更してプロジェクトをコンパイルできます。この時点から、問題はありません。

これらは、D7 から XE2 へのアプリケーションの変換/移行 (Unicode 変換、カスタマイズされた Raize 5 コンポーネントの Raize 6、Turbo Power、Virtual Tree View、Hypergrid などへの移行) よりもはるかに簡単でした。幸いなことに、これらすべてのコンポーネントの XE2 バージョンを見つけました。

于 2012-08-13T13:35:18.760 に答える