![]() |
Re: DFM-Datei automatisch erstellen und zur Laufzeit laden?
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 ![]() |
Re: DFM-Datei automatisch erstellen und zur Laufzeit laden?
Ja, AQTime is echt ganz toll. Aber um auf deine ursprüngliche frage zurück zu kommen:
Zitat:
Das ganz geht, wie der ausdruck 'streamen' schon sagt mit einem stream. Und zwar mit jedem stream in delphi:
Delphi-Quellcode:
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:
Stream.WriteComponent(aCompo);
... Stream.ReadComponent(aCompo);
Delphi-Quellcode:
Viel spass :-D
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:39 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-2025 by Thomas Breitkreuz