Использование 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 ...
Основные ИСПОЛЬЗОВАНИЯ Util ...
Util USES Main (2-й использует предложения в разделе реализации, поэтому у меня нет проблем с циклической ссылкой ....
Пока все хорошо. Моя проблема в том, что мне нужно передать переменную var типа TTableAttrSet FROM main в 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» - ПОСЛЕ моих определений процедуры. Как мне обойти это? На данный момент я продублировал определение типа TTableAttrSet в верхней части файла Utils.pas, а также Main.pas, но это «кажется неправильным».
Проблема 2). Большая проблема, с которой я сталкиваюсь - это ошибка компиляции. на вызывающей линии в Main.pas
TestAttr(TabAttr);
Я получаю ошибку «Типы фактических и формальных параметров var должны быть идентичными». Насколько мне известно, они идентичны. На что жалуется компилятор?