AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi DFM-Datei automatisch erstellen und zur Laufzeit laden?
Thema durchsuchen
Ansicht
Themen-Optionen

DFM-Datei automatisch erstellen und zur Laufzeit laden?

Ein Thema von BerTa · begonnen am 3. Dez 2004 · letzter Beitrag vom 3. Dez 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: DFM-Datei automatisch erstellen und zur Laufzeit laden?

  Alt 3. Dez 2004, 11:44
Baust Du dann auch in der DLL eine eigene Verbindung mit der Datenbank auf?
Wieso denn alles in eigene DLL's auslagern. Es ist doch viel einfacher (und auch von der gesamten größer (Exe+DLL's) sparsammer alles in eine Anwendung zu halten. Damit kommst Du auch nur mit einer einzigen DB-Verbindung aus.

Es könnten verschiedene Ursachen haben:
- In jeder DLL wird eine DB-Verbingung aufgebaut (dauert auch ein paar ms)
- Die Abfragen sind supoptimal (zu große Ergebnismenge)
- ...

Falls Du ein paar € ausgeben kannst, würde ich AQTime empfehlen. Hab damit schon teilweise die Performance auf das 10-100fache erhöht, da damit sehr einfach die Performancekritischen Stellen bis auf Codezeilen gefunden werden kann.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

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

Re: DFM-Datei automatisch erstellen und zur Laufzeit laden?

  Alt 3. Dez 2004, 12:13
Ja, AQTime is echt ganz toll. Aber um auf deine ursprüngliche frage zurück zu kommen:

Zitat:
Kann man zur Design-Zeit eine DFM-Datei automatisch erzeugen, aus der Delphi zur Laufzeit die entsprechende Form darstellt?
Du kannst in delphi jede beliebige komponente, mit unterkomponenten, streamen lassen. Das muss nicht unbedingt ein form sein. Dh. du könntest auch sagen, dass du nur den inhalt einer Tabs streamst, und in deiner DB speichert.

Das ganz geht, wie der ausdruck 'streamen' schon sagt mit einem stream. Und zwar mit jedem stream in delphi:

Delphi-Quellcode:
Stream.WriteComponent(aCompo);
...
Stream.ReadComponent(aCompo);
Ich hab das früher mal für filestreams gemacht. Da is auch noch die umwandlung in Text-DFMs mit drinne, die du evtl. weglassen könntest, oder nur zur kontrolle aktivieren. Und evtl redundante streams optimieren:

Delphi-Quellcode:
function SaveCompoToFile(aCompo : TComponent; FileName: string; asBinary: Boolean = false): boolean;
var Stream1:TMemoryStream;
    Stream2:TMemoryStream;
      format : TStreamOriginalFormat;
begin
  result := false;
   format := sofText;
   Stream1 := TMemoryStream.Create;
  Stream2 := TMemoryStream.Create;
   try
      Stream1.WriteComponent(aCompo);
    Stream1.Position := 0;
    if not asBinary then
    begin
      format := sofText;
      ObjectBinaryToText(Stream1,Stream2,format);
    end else Stream1.SaveToStream(Stream2);
    Stream2.SaveToFile(FileName);
    result := true;
   finally
      Stream1.Free;
      Stream2.Free;
   end;
end;


function LoadCompoFromFile(aCompo : TComponent; FileName: string; asBinary: Boolean = false): boolean;
var FileStream:TFileStream;
    MemoryStream:TMemoryStream;
    format:TStreamOriginalFormat;
begin
  result := false;
  if not FileExists(fileName) then exit;
  MemoryStream := TMemoryStream.Create;
  FileStream := TFileStream.Create(FileName,fmOpenRead);
  try
    if not asBinary then
    begin
      format := sofBinary;
      ObjectTextToBinary(FileStream,MemoryStream,format);
    end else MemoryStream.LoadFromStream(FileStream);
    MemoryStream.Position := 0;
    MemoryStream.ReadComponent(aCompo);
    result := true;
  finally
    FileStream.Free;
    MemoryStream.Free;
  end;
end;
Viel spass
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 07:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz