Einzelnen Beitrag anzeigen

Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#5

Re: dfm resource in EXE zur laufzeit speichern->schreibge

  Alt 9. Nov 2003, 21:17
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
  Mit Zitat antworten Zitat