1

Delphi 2 プロジェクトを RAD Studio XE2 に移行しています。

コンパイルしようとすると、

[DCC 致命的なエラー] MyUnit.pas(9): F2051 ユニット JclUnitVersioning が別のバージョンの System.Contnrs.TObjectList.Remove でコンパイルされました

次の行で:

unit MyUnit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, DB, DBTables, TB97, ExtCtrls, Grids, DBGrids, Vcl.Mask, JvExMask,
  Vcl.DBLookup,
  JvToolEdit,  {<-- error here}
  TB97Ctls;

{...}

RAD Studio、JCL、および JVCL をアンインストールして再インストールしようとしましたが、何も変わりません。

更新A.Hausladenのバイナリ Jediインストーラを使用していました (Delphi 試用版でのみ使用することを目的としています)。

4

2 に答える 2

2

古い DCU ファイルを再ビルドまたは削除する必要があるか、プロジェクトまたはライブラリ パスの内容に一貫性がありません。(適切な JCL ライブラリ フォルダにないという名前のファイルを見つけJclUnitVersioning.dcuて、それらを削除します。適切なライブラリ フォルダの名前は、デルファイのバージョン番号に応じてjcl\lib\d7から までです)jcl\lib\d16

これは通常、プロジェクトが、コンパイル済みの DCU ファイルを含むライブラリ パス (またはプロジェクト検索パス) にあるディレクトリと、一部のソース ユニット (.pas ファイル) へのアクセスの両方にアクセスできることを意味します。他のユニットに依存する 1 つまたは複数のユニットが、現在とは異なる時期にコンパイルされ、共通のユニットの複数のバージョンが含まれています。あなたに絵を描いてもらえたらいいのに。

あなたが車を持っていて、誰かがエンジンをアップグレードして V6 から V8 に変更したと想像してください。今度は、以前あなたのエンジンを整備していた人が戻ってきて、V6 のエキゾースト マニホールドが取り付けられている場所を見つけようとします。もうそこにはありません。移動しました。新しいエンジンは現在の状態で凍結されているため (ここで私と一緒にいてください!)、サービス技術者は単にあなた (顧客) に戻って、「申し訳ありませんが、混乱しています。続行できません。諦めます」と言うだけです。 "。それが、このエラー メッセージの意味です。

いくつかの方法でクリーンアップできます。.pasファイルから 100% コンパイルし、ファイルを含むライブラリ フォルダーがまったくないことを確認するのは簡単なことかもしれません.dcu。もちろん、これは理想的とは言えません。なぜなら、ライブラリ パスの全体的な目的は、コンパイル済みの DCU ファイルの「ライブラリ」を含めることだったからです。

代わりに、クリーンアップ (すべての DCU ファイルを削除) を実行し、すべてのコンポーネント パッケージをソースから再構築して (その目的のためのバッチ ファイルがありますよね?)、プロジェクトの検索パスとライブラリ パスの両方を確認することをお勧めします。両方に含まれている必要があると思われるフォルダーのみが含まれていることを確認してください。

于 2012-04-10T14:23:27.317 に答える
1

Delphi 2010とXE3で同じ問題が発生しました(移行中に同じPC上で)。

プロジェクトと JCL プロジェクトの両方を数時間再コンパイルした後 (PC のインストーラーのバッチ ファイル エラー)、tools/options/Delphi Options/libraries でディレクトリが宣言された順序に問題があることがわかりました。

それらをすべて取り出し、バージョン固有のディレクトリ (lib\D14、lib\D17\Win32 など) を追加してから、必要なその他の JCL サブディレクトリを追加しました (つまり、JCL を使用するプロジェクトがビルドされるまで、一度に 1 つずつ)。

于 2013-06-20T14:54:06.917 に答える