Я пишу приложение Delphi 2010.В нем много файлов, два из которых называются Utils_ABS и Utils_MAT.Я создал тип записи, который нужно понимать обоим файлам, поэтому я поместил его в отдельный файл с именем TypeDefs.inc.
В верхней части Utils_MAT и Utils_ABS у меня есть INCLUDED TypeDefs.inc.
unit Utils_ABS;
interface
{$WARNINGS ON}
{$HINTS ON}
{$WARN UNIT_PLATFORM OFF}
{$WARN SYMBOL_PLATFORM OFF}
uses
Windows, Messages, ... Utils, Analysis, UserFeedback, Utils_MAT;
{$I TypeDefs.inc} // Include TypeDefs that are used multiple places
procedure ABS_Load;
...
Utils_MAT выглядит очень похоже, особенно в отношении {$I TypeDefs.inc}
.
. Ключевым моментом является то, что оба файла ссылаются на третий файл, TypeDefs.inc, как INCLUDE, который имеетопределение ЗАПИСИ:
type
TTableAttrType = Record
tabIOT: Boolean; // Is table an IOT
...
end;
В этом файле нет ничего, кроме этого определения одной записи.
Проблема в том, что при компиляции я получаю следующую ошибку:
[Ошибка DCC] Utils_ABS.pas (212): E2010 Несовместимые типы: 'Utils_ABS.TTableAttrType' и 'Utils_MAT.TTableAttrType'
Я в замешательстве.Как они могут быть несовместимыми типами, если они происходят из одного и того же определения?Не копия определения, но буквально то же определение.
Я проверил весь свой исходный код, и эта запись TTableAttrType больше нигде не определена.
Я попытался закомментировать$ INCLUDE и жестко закодировать определение записи в Utils_ABS и Utils_MAT, но я все еще получаю ту же ошибку.
Как мне устранить эту ошибку?Как определить структуру записи в одном месте и получить доступ к нескольким файлам?