Delphi 2010の使用... 私は一緒にグループ化するバイナリプロパティのセットを持っています。私はタイプTTableAttrSetの変数を作成することができ、私のMAIN.PASユニットで、このような...Delphiで、ユニット間の型定義を使用したときの問題
type
TTableAttributeType = (
tabROOT = 1,
tabONLINE = 2,
tabPARTITIONED = 3,
tabCOMPRESSED = 4,
);
// Make a set of of the Table Attribute types...
type
TTableAttrSet = Set of TTableAttributeType;
としてそれを定義しています。 別のユニットでは、UTILS.PASもTTableAttrSetタイプを理解する必要があります。それはUSES条項によって処理されます...
メインUSES Util ... Util USES Main(2番目の節は実装セクションの下にありますので、循環参照の問題は発生しません....
これまでのところは良い。私の問題は、私は、メインFROM UtilsのにタイプTTableAttrSetのVAR変数を渡す必要があるということです。main.pas
procedure TForm1.Button1Click(Sender: TObject);
var
TabAttr : TTableAttrSet;
begin
TestAttr (TabAttr);
end;
とUTILS.PAS中で
、私が持っています
procedure TestAttr(var Attr: TTableAttrSet);
begin
Attr := [tabROOT, tabCOMPRESSED];
end;
これを試してみると、いくつかの問題が発生します... 問題1)。私はutils.pasの上部に私の手順の定義を定義すると、
procedure TestAttr(var Attr: TTableAttrSet);
私はTTableAttrSetが未宣言の識別子でエラーが発生します。これは、定義がMain.pasにあり、 'Main.pasを使用する'が自分の手続き定義の後にあるため意味をなさない。これをどうやって回避するのですか?今のところ、私はUtils.pasファイルとMain.pasの先頭にTTableAttrSet型定義を複製しましたが、これは「正しい方法ではない」と思われます。
問題2)。私が実行している大きな問題は、コンパイルエラーです。
TestAttr(TabAttr);
「実際と正式なvarパラメータの型は同一でなければなりません」というエラーが表示されます。私の知る限り、彼らは同じです。コンパイラは何について苦情を言いますか?
循環参照にどのような問題がありますか? –