6

プロジェクトに xyz.pas ファイル参照が 1 つあります。しかし、そのファイルは私と一緒ではありません。その xyz.pas ファイルの xyz.dcu および xyz.obj ファイルがあります。プロジェクトをコンパイルしようとすると、「xyz.dcu not found」というエラーが発生しました。そのため、検索パスに xyz.dcu のパスを含めました。「xyz.dfmが見つかりません」というエラーが表示されます。

解決策を教えてください。プロジェクトを .dcu および .obj ファイルのみでコンパイルすることはできますか?

前もって感謝します。よろしく、ナレン

4

5 に答える 5

7

仕事を失っていないことを願っています。

簡略化すると、Delphi は次のように動作します:
PAS+DFM => DCU
DCU+RES => EXE
この回答の最後にある Delphi ファイルについて詳しく説明します。

DCU ファイルしかない場合は、プロジェクトをコンパイルできます。最初に、フォルダから PAS ファイルを削除します。削除しないと、Delphi が再コンパイルを試みます(再コンパイルするには、DFM ファイルが必要です)。
Obj ファイルは役に立たないと思います。


DFM ファイルはプロジェクトにとって非常に重要ですが、それほど重要ではありません。非常に必要な場合は、PAS ファイルにある情報とアプリケーションの GUI の外観 (実行しているのを見たことがある場合) に基づいて手動で再構築できるため、それなしで続行できます。

これがトリックです(いくつかの作業が必要です):

新しいフォームを作成し、元の PAS ファイルの先頭でフォームの宣言を確認するだけです。次のようになります。

TYPE
  TYourForm = class(TForm)
     xLabel: TLabel;
     yButton: TButton;
     etc
     etc
  end;

次に、これらすべてのコントロールを新しいフォームに戻し、PAS ファイルで指定されているとおりに名前を付けます (xLabel、yButton など)。元の GUI に似せて配置します。完了したら、新しく作成した PAS ファイルを元の PAS ファイルに置き換えます。重要: DFM と PAS ファイルの名前は一致している必要があります。コンパイルして完了です!再構築された GUI は、元の GUI とまったく同じに見えない場合がありますが、そうなるはずです。

ヒント:
DCU/EXE から DFM ファイルを抽出できるツールがあります。
ここにそれらのいくつかがあります: www.delphi2.software.informer.com/download-delphi-extract-dfm
これは大いに役立ちます!


.PAS - Delphi ソース ファイル
PAS はソース管理に格納する必要があり
ます Delphi では、PAS ファイルは常にユニットまたはフォームのソース コードです。ユニット ソース ファイルには、アプリケーションのほとんどのコードが含まれています。ユニットには、フォームまたはそれに含まれるコンポーネントのイベントに関連付けられたイベント ハンドラーのソース コードが含まれます。Delphi のコード エディタを使用して .pas ファイルを編集する場合があります。.pas ファイルは削除しないでください。

.DCU - Delphi コンパイル
済みユニット コンパイル済みユニット (.pas) ファイル。デフォルトでは、各ユニットのコンパイル済みバージョンは、ユニット ファイルと同じ名前で拡張子が .DCU (Delphi コンパイル済みユニット) の個別のバイナリ形式ファイルに格納されます。たとえば、unit1.dcu には、unit1.pas ファイルで宣言されたコードとデータが含まれています。プロジェクトを再構築する場合、最後のコンパイル以降にソース (.PAS) ファイルが変更されていないか、.DCU ファイルが見つからない場合を除き、個々のユニットは再コンパイルされません。.dcu ファイルは、アプリケーションのコンパイル時に Delphi によって再作成されるため、安全に削除してください。

.DFM - Delphi フォーム
DFM はソース管理に保存する必要があり
ます。これらのファイルは常に .pas ファイルとペアになっています。Dfm ファイルには、フォームに含まれるオブジェクトの詳細 (プロパティ) が含まれています。フォームを右クリックし、ポップアップ メニューから [テキストとして表示] を選択すると、テキストとして表示できます。Delphi は、.dfm ファイルの情報を完成した .exe コード ファイルにコピーします。このファイルを変更すると、IDE がフォームを読み込めなくなる可能性があるため、このファイルを変更する場合は注意が必要です。フォーム ファイルは、バイナリ形式またはテキスト形式で保存できます。[環境オプション] ダイアログでは、新しく作成したフォームに使用する形式を指定できます。.dfm ファイルを削除しないでください。

ソース: delphi.about.com/od/beginners/a/aa032800a.htm

于 2011-06-01T11:35:28.260 に答える
3

まだ実行可能ファイルを所有している場合は、任意のリソースマネージャーを使用して、アプリケーションリソースから完全な元のDFMファイルを抽出できます。例:XNResourceEditor。RC DATAカテゴリには、TXYZというアイテムがあります。

于 2011-06-01T12:04:58.207 に答える
2

Delphi 20xx/XE
Delphi は古いバージョンのファイルをプロジェクト ディレクトリの隠しサブディレクトリ__history.

そのディレクトリには、.pas、.dfm、およびその他のプロジェクト ファイルのバージョンが保存されています。
これらのファイルは、変更をディスクに保存するたびに作成されます。

ハードディスクですべてのファイル (非表示のファイルを含む) を検索すると、*.~*~バックアップ ソース ファイルが表示されます。
彼らはあなたが行った最後の変更を見逃すでしょうが、少なくともあなたが最初からやり直す必要はありません.

Delphi 7 以前Delphi 7 では、これらのファイルは拡張子
を付けてプロジェクト ファイルと同じディレクトリに保存されます。.~

于 2011-06-01T14:51:42.527 に答える
1

DFM ファイルは、(たとえば) フォームの「視覚的な」側面 (コントロール、コンポーネント、プロパティ、ビジュアル、データなど) を保持します。PAS ファイル (またはコンパイル済みの DCU ファイル) に DFM が必要な場合は、DFM が必要です。そうしないと、このエラーが発生します。DFMを持つしかないと思います。

訂正 (以下に書いてあります。申し訳ありません!): PAS ファイルを削除してDCU ファイルのみを提供すると、DCU ファイルのみでコンパイルできます。この場合、コンパイラは DCU を再コンパイルできないため、アプリにリンクするには、DCU ファイルを同じコンパイラ バージョンでコンパイルする必要があります。

于 2011-06-01T11:15:42.743 に答える