Hab die idee glatt mal getestet...und es funktioniert auch wunderbar. Der folgende code sorgt dafür, das die
dfm-daten aus der
dfm datei geladen wird:
Delphi-Quellcode:
constructor TForm1.Create(AOwner: TComponent);
begin
// inherited; // <- standard initialisierung von delphi abklemmen
GlobalNameSpace.BeginWrite;
try
CreateNew(AOwner);
if (ClassType <> TForm)
and not (csDesigning
in ComponentState)
then
begin
Include(FFormState, fsCreating);
try
LoadCompoFromFile(self,ExtractFilePath(paramstr(0))+'
fm1.dfm');
// hier wäre noch interessant den unit-namen auszulesen?
finally
Exclude(FFormState, fsCreating);
end;
if OldCreateOrder
then DoCreate;
end;
finally
GlobalNameSpace.EndWrite;
end;
end;
...
destructor TForm1.Destroy;
begin
SaveCompoToFile(self,ExtractFilePath(paramstr(0))+'
fm1.dfm');
inherited;
end;
...ABER das führt zu einer reihe von schwierigkeiten, da änderungen am formular nur nach expliziten speichern in der
dfm-datei stehen, die dann evtl ohne diese änderungen, beim start des grogs geladen wird. Beendet man dann das prog werden die
dfm-daten, ohne die änderungen, gespeichert und delphi fragt dann ob die 'neue'
dfm geladen werden soll! Wenn man dann nicht tierisch aufpasst und >nein< drückt wird die arbeit zunichte gemacht. Drückt man tatsächlich nein, dann sind die änderungen, die man zur laufzeit gemacht hat futsch.
Diese methode ist zu verwirrend für den programmierer
Gibt es wirklich keine methode die resource in diese 'MemoryMappedFiles' zu schreiben? Möglicherwiese über umwege?
cu,
maximov