AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi dfm resource in EXE zur laufzeit speichern->schreibgeschüt?
Thema durchsuchen
Ansicht
Themen-Optionen

dfm resource in EXE zur laufzeit speichern->schreibgeschüt?

Ein Thema von maximov · begonnen am 9. Nov 2003 · letzter Beitrag vom 10. Nov 2003
 
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#6

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

  Alt 9. Nov 2003, 22:46
Zitat:
[...] das führt zu einer reihe von schwierigkeiten[...]
Arbeite nicht direkt auf der dfm, die auch von Delphi verwendet wird, sondern auf einer eigenen, die zur Laufzeit optional verwendet werden kann.
Hierzu würde sich ein Konstruktur eignen, der einen Stream, in dem die Daten enthalten sind, übergeben bekommt, zB
Delphi-Quellcode:
constructor TForm1.CreateFromStream(AOwner: TComponent; ADFMStream: TStream);
begin
  //...
  LoadCompoFromStream(Self, ADFMStream);
  //...
end;
im Konstructor Create(AOwner: TComponent) könntest Du dann prüfen, ob die optionale dfm-Datei existiert und einen FileStream erzeugen oder den ResourceStream, wie in der StdImplementierung. Anschließend ruft er den Konstruktor CreateFromStream auf, etwa so:
Delphi-Quellcode:
constructor TForm1.Create(AOwner: TComponent);
var
  myStream: TStream;
begin
  //create stream with dfm-data either from file or from res
  if FileExists(GetDFMFilename) then
    myStream:= TFileStream.Create(GetDFMFilename)
  else
    myStream:= //as implemented in unit Classes

  //create instance w data from stream
  try
    CreateFromStream(AOwner, myStream);
  finally
    myStream.Free;
  end;
end;
Durch diese Abstraktion wäre se später auch denkbar, mit Datenbanken statt mit Dateien zu arbeiten...

Den Unit-Dateinamen der Klasse (zB um GetDFMFilename zu implementieren) bekommst Du übrigens mithilfe der RTTI heraus (TTypeData.UnitName).

Achja, der Code und das Verfahren ist nicht von mir getestet worden.

Zitat:
Gibt es wirklich keine methode die resource in diese 'MemoryMappedFiles' zu schreiben?
Das Problem hat nicht direkt etwas mit der Zugriffstechnik zu tun. Ich wollte nur aufzeigen, warum Windows ein Handle auf der Datei hält und deshalb keinen Schreibzugriff gewährt.
gruß, choose
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz