Delphi2010を使用しています...グループ化したいバイナリプロパティのセットがあります。私はそれをそのように定義しました...
type
TTableAttributeType = (
tabROOT = 1,
tabONLINE = 2,
tabPARTITIONED = 3,
tabCOMPRESSED = 4,
);
// Make a set of of the Table Attribute types...
type
TTableAttrSet = Set of TTableAttributeType;
MAIN.PASユニットで、TTableAttrSet型の変数を作成できます。別のユニットであるUTILS.PASは、TTableAttrSetタイプも理解する必要があります。それはUSES条項によって処理されます...
Main USES Util ... Util USES Main(2番目のuses句は、実装セクションの下にあるため、循環参照の問題は発生しません...。
ここまでは順調ですね。私の問題は、TTableAttrSetFROMmain型のvar変数をUtilsに渡す必要があることです。
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にあり、「uses Main.pas」がプロシージャ定義の後にあるため、これは理にかなっています。これを回避するにはどうすればよいですか?今のところ、Utils.pasファイルとMain.pasの先頭にTTableAttrSetタイプ定義を複製しましたが、これは「正しい方法ではないようです」。
問題2)。私が遭遇しているより大きな問題は、コンパイルエラーです。Main.pasの呼び出し回線
TestAttr(TabAttr);
「実際の変数パラメーターと正式な変数パラメーターのタイプは同一である必要があります」というエラーが表示されます。私の知る限り、それらは同一です。コンパイラは何について不平を言っていますか?