Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why would a module be unsavable until another module is loaded?

Most of the units I work on rely on a Data Module. One of the most annoying things I come accross is an error message telling me

Module X references another module and cannot be saved until Module Y is loaded.

Now, I'm sure there is a very good reason why CheckNoFixups raises this error while trying to WriteRootStream, and fails to save what is in effect a Text file (and hopefully this isn't followed by Catastrophic Failure where I must then restart the IDE while still unable to save my work.) but what is the good reason?

Why am I unable to click save without opening anothing text file containing various functions and objects much like any other unit? whats so special about a DataModule that means I can't save the source I'm working on until it's open, why aren't the 45 other units in the uses clause so important they must be open?

EDIT: It's Delphi 2007

the Declaration of the DataModule is :

unit DataMD;

TRepDataMod = class(TDataModule)
...
var
  RepDataMod: TRepDataMod;
like image 476
James Barrass Avatar asked Mar 10 '10 10:03

James Barrass


2 Answers

If the DataModule is not part of the opened project the data aware objects in your form that reference the DataModule, cannot verify their reference and I think therefore the message comes up.

I only seen this message when I was porting an older project to a new Delphi version or were migrating to a new set of database components. In normal circumstances I haven't encountered this message.

In earlier versions I haven't seen the message and the form/unit could be saved, but the references that were in your dfm were magicly deleted.

like image 170
evdkraan Avatar answered Oct 19 '22 20:10

evdkraan


I have the same issue (Delphi 7).

I have an imagelist on a datamodule for usage throughout the whole application. It happens after a compile, if there is an syntax error. The IDE opens the (pas) file and I can correct the error.

But trying to save the file shows that message ("Module 'XXX' links to module 'YYY' which cannot be found in the current project. Do you whish to remove/redirect the links to another module?"). XXX is the file itself and YYY is the datamodule. The datamodule is included in the project and answering "Yes" to that question would remove all links in the dfm file.

So the only solution is pressing "No", which basically saves the pas file and close the file in the - this time pressing "No" to the question if the file should be saved (the pas is in fact already saved).

I have allready tried various workarounds butstill struggling.

like image 31
Christian Avatar answered Oct 19 '22 21:10

Christian