1

問題があります。説明してみます。

クラスがあり、新しい機能を持つ可能性のあるユニットがあります。

D3BF4E849ACC45249B990F802EFB1F15\UnitFile1.pas 8DC8977E7A7B469AACFE3CC77CA7075E\UnitFile1.pas

どちらも同じクラスです: IClass_1 = クラス

このファイルのさまざまなバージョンにコード番号を使用しています。

別のユニット ファイル (UnitFile2.pas) は、そのユニット ファイル (UnitFile1.pas) を使用します。

また、2 番目のユニット ファイル (UnitFile2.pas) には異なるバージョンがあります。

F94C439C822E490DB228F2C16EF2C190\UnitFile2.pas 14CEEFAFF1D64DDD8CBDEDD334D4A3FF\UnitFile2.pas

どちらも同じクラス: IClass_2 = class(IClass_1)

今問題が始まります。

「F94C439C822E490DB228F2C16EF2C190\UnitFile2.pas」には「D3BF4E849ACC45249B990F802EFB1F15\UnitFile1.pas」が必要です

「14CEEFAFF1D64DDD8CBDEDD334D4A3FF\UnitFile2.pas」には「8DC8977E7A7B469AACFE3CC77CA7075E\UnitFile1.pas」が必要です

ただし、ファイル名は同じです(このようなシステムが必要です。したがって、同じです)。ユニット ファイルでは、delphi ではそのように書くことはできません。

ファイル F94C439C822E490DB228F2C16EF2C190\UnitFile2.pas 内。「D3BF4E849ACC45249B990F802EFB1F15\UnitFile1.pas」の UnitFile1 を使用します。

私の問題を教えていただければ幸いです。どのユニット ファイルをそのパスで使用するかをコンパイラに伝えるにはどうすればよいですか? (私はDelphi-7を使用しています)

4

4 に答える 4

6

ユニット名に異なる名前を付けてください。そうすれば、両方のユニットをプロジェクトに含めることができます。

次に、プロジェクト オプションでユニット エイリアスを使用して、これらの実際のユニットのいずれかに解決される「仮想ユニット名」を作成します。これらのいずれかを「使用」するユニットでは、ユニット エイリアス (「仮想名」) によってそれらを参照します。

たとえば、dpr で:

  uses
    ...
    UnitFile1a in '....\UnitFile1a.pas',
    UnitFile1b in '....\UnitFile1b.pas',
    ...

あなたのユニットでは:

   uses
     UnitFile1;

プロジェクト オプションで、次のいずれかのユニット エイリアスを指定します。

   UnitFile1=UnitFile1a

また

   UnitFile1=UnitFile1b

その後、「UnitFile1?」のいずれかでプロジェクトをビルドできます。unit エイリアスを変更するだけで適切です。

于 2010-01-20T20:54:26.830 に答える
2

これで問題が解決するかどうかはわかりませんが、名前空間の概念があり、次のようにユニット名にドットを入れることができます。

異なるディレクトリに同じファイル名を持つのではなく...

D3BF4E849ACC45249B990F802EFB1F15\UnitFile1.pas 8DC8977E7A7B469AACFE3CC77CA7075E\UnitFile1.pas

F94C439C822E490DB228F2C16EF2C190\UnitFile2.pas 14CEEFAFF1D64DDD8CBDEDD334D4A3FF\UnitFile2.pas

ファイル名のプレフィックスを使用できます。

D3BF4E849ACC45249B990F802EFB1F15.UnitFile1.pas 8DC8977E7A7B469AACFE3CC77CA7075E.UnitFile1.pas

F94C439C822E490DB228F2C16EF2C190.UnitFile2.pas 14CEEFAFF1D64DDD8CBDEDD334D4A3FF.UnitFile2.pas

次に、uses 句で完全なファイル名を使用できます。

uses
  D3BF4E849ACC45249B990F802EFB1F15.UnitFile1;

はい、これは Delphi 7 で動作します。

于 2010-01-20T21:26:51.923 に答える
2

「D3BF4E849ACC45249B990F802EFB1F15」と「F94C439C822E490DB228F2C16EF2C190」を検索パスに入れるようにプロジェクト オプションを設定する必要があります。コードでユニット パスを指定することはできません。

于 2010-01-02T17:53:21.070 に答える
0

私の知る限り、同じ名前の 2 つのユニットをプロジェクトに追加することはできません。

プロジェクトオプションに正しいフォルダを追加するか、必要なユニットを「表示 - プロジェクトマネージャ」画面に追加できます (プロジェクト名を右クリックして「追加」を選択します。正しいフォルダで正しいユニットを選択し、それ以降は、プロジェクト内のすべてのフォームおよび他のユニットでユニット名のみを使用できます。

なぜそのような不可解なフォルダ名を使用したいのかは、私にはわかりません。あなたがこれをやりたいと思う理由は何も思いつきません。

于 2010-01-11T17:33:25.010 に答える