使用 Delphi 2010... 我有一组要组合在一起的二进制属性。我已经这样定义了...
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 使用 Util... Util 使用 Main (第二个使用子句,在实现部分下,所以我没有遇到循环引用问题......
到目前为止,一切都很好。我的问题是我需要将 TTableAttrSet FROM main 类型的 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 中,而“使用 Main.pas”在我的过程定义之后。我该如何解决这个问题?目前,我已经在 Utils.pas 文件和 Main.pas 的顶部复制了 TTableAttrSet 类型定义,但这“似乎不是正确的方法”。
问题2)。我遇到的更大问题是编译错误。在 Main.pas 的主叫线上
TestAttr(TabAttr);
我收到错误“实际和正式 var 参数的类型必须相同”。据我所知,它们是相同的。编译器在抱怨什么?