Почему модуль будет недоступен, пока другой модуль не будет загружен? - PullRequest
7 голосов
/ 10 марта 2010

Большинство устройств, над которыми я работаю, используют модуль данных. Одна из самых раздражающих вещей, с которыми я сталкиваюсь, это сообщение об ошибке, сообщающее мне

Модуль X ссылается на другой модуль и не может быть сохранен, пока модуль Y не загружен.

Теперь я уверен, что есть очень веская причина, по которой CheckNoFixups вызывает эту ошибку при попытке WriteRootStream и не может сохранить то, что фактически является текстовым файлом (и, надеюсь, за этим не следует Catastrophic Failure где я должен затем перезапустить IDE, пока не могу сохранить свою работу.) Но в чем причина?

Почему я не могу нажать «Сохранить», не открыв ничего текстового файла, содержащего различные функции и объекты, как у любого другого устройства? Что такого особенного в модуле DataModule, который означает, что я не могу сохранить источник, над которым я работаю, до тех пор, пока он не будет открыт, почему 45 других модулей в предложении использования не настолько важны, чтобы они были открыты?

EDIT: Это Delphi 2007

Объявление DataModule:

unit DataMD;

TRepDataMod = class(TDataModule)
...
var
  RepDataMod: TRepDataMod;

Ответы [ 4 ]

1 голос
/ 29 июня 2010

У меня та же проблема (Delphi 7).

У меня есть список изображений в модуле данных для использования во всем приложении. Это происходит после компиляции, если есть синтаксическая ошибка. IDE открывает файл (pas), и я могу исправить ошибку.

Но попытка сохранить файл показывает это сообщение («Модуль« XXX »ссылается на модуль« YYY », которого нет в текущем проекте. Хотите удалить / перенаправить ссылки на другой модуль?»). XXX - это сам файл, а YYY - модуль данных. Модуль данных включен в проект, и ответ «Да» на этот вопрос приведет к удалению всех ссылок в файле dfm.

Таким образом, единственное решение - нажать «Нет», что в основном сохраняет файл pas и закрывает файл в - на этот раз нажатием «Нет» на вопрос, должен ли файл быть сохранен (pas фактически уже сохранен) .

Я уже пробовал различные обходные пути, но все еще борется.

1 голос
/ 23 июня 2013

Модуль X ссылается на другой модуль и не может быть сохранен до загрузки модуля Y.

Просто просмотрите X.dfm (X.fmx) для записей "Y". Что с ними делать, это ваш выбор.

1 голос
/ 10 марта 2010

Если модуль DataModule не является частью открытого проекта, объекты, осведомленные о данных, в вашей форме, которые ссылаются на модуль DataModule, не могут проверить их ссылку, и я думаю, поэтому сообщение появляется.

Я видел это сообщение, только когда переносил старый проект на новую версию Delphi или выполнял миграцию на новый набор компонентов базы данных. В обычных условиях я не встречал этого сообщения.

В более ранних версиях я не видел сообщения, и форму / единицу можно было сохранить, но ссылки, которые были в вашей dfm, были волшебным образом удалены.

0 голосов
/ 14 января 2016

Убедитесь, что DataModule является частью проекта. Недостаточно просто включить путь поиска или войти в dpr-файл вручную. Пройдите через IDE и добавьте DataModule в проект.

Также убедитесь, что dfm-ресурс DataModule имеет то же имя, что и модуль.

...