Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Ressourcen Datei zur Laufzeit (https://www.delphipraxis.net/210068-ressourcen-datei-zur-laufzeit.html)

creehawk 25. Feb 2022 08:14

Ressourcen Datei zur Laufzeit
 
Moin Moin.

Kann man ein Ressource Datei eigentlich zur Laufzeit eines Programms einbinden oder laden oder dazugeben?

creehawk

Nachtrag: Wenn ich die .res zum Progmmstart einbinde müsste ich ja sonst bei Änderungen dieser Datei das Programm neu komplieren ....

dummzeuch 25. Feb 2022 09:03

AW: Ressourcen Datei zur Laufzeit
 
Zitat:

Zitat von creehawk (Beitrag 1502679)
Moin Moin.

Kann man ein Ressource Datei eigentlich zur Laufzeit eines Programms einbinden oder laden oder dazugeben?

creehawk

Nachtrag: Wenn ich die .res zum Progmmstart einbinde müsste ich ja sonst bei Änderungen dieser Datei das Programm neu komplieren ....

.RES-Dateien habe ich nie probiert, aber es gibt Ressource-DLLs, quasi eine leere DLL, an die man die Ressourcen binden kann.

Andreas13 25. Feb 2022 10:11

AW: Ressourcen Datei zur Laufzeit
 
Ja, mit Hilfe von BTMemoryModule.pas https://github.com/DSPlayer/memorymodule/ geht es auch zur Laufzeit. Allerdings muß die einzubindende Datei zuvor mit brcc32.exe in das .RES-Format umgewandelt werden und so vorliegen. Das Einbinden zur Laufzeit erfolgt mit folgendem Aufruf:
Delphi-Quellcode:
  ResStream:= TResourceStream.Create(HInstance, // Handle: kommt von Windows, wird im TResourceStream intern benötigt
                                     RES_Name, // Name Ressource Datei: danach wird gesucht.
                                     RT_RCDATA); // Anwendungsdefinierte Ressource (Rohdaten)
Gruß, Andreas

creehawk 25. Feb 2022 10:44

AW: Ressourcen Datei zur Laufzeit
 
Moin Moin.

Danke für die Antworten, hatte ich beides auch schon ausprobiert. Die BTModule sind ziemlich fehleranfällig und die DLL Geschichte ist wenig optimal in meinen Fall.

Vielen Dank für die Mühe, da werde ich wohl was anderes erfinden müssen.....

creehawk

Uwe Raabe 25. Feb 2022 10:54

AW: Ressourcen Datei zur Laufzeit
 
Was soll denn genau in der Resource abgelegt werden?

Sinspin 25. Feb 2022 14:46

AW: Ressourcen Datei zur Laufzeit
 
Du musst deine Resourcen aber generell nicht in irgend einen Binärcontainer packen. Das meißte gibt es doch auch als Einzeldateien die man auch so lassen kann. Oder halt in ein ZIP.

creehawk 26. Feb 2022 07:54

AW: Ressourcen Datei zur Laufzeit
 
Update Programm

Ich möchte/muss in verschiedenen Programmen XML Dateien gelegentlich aktualisieren. Ich stelle diese Dateien zusammen und erzeuge eine RES Datei.
Das Programm um die XML am Zielrechner einzuspielen ist simpel. Alle erforderlichen Pfade und andere Daten sind dort in der Registry.

Die res Datei hat in der größten Ausprägung 69 KB. Wenn ich jetzt mit Sydney ein entsprechendes UpdateProgramm erstelle lande ich bei 16 MB.
Also nehme ich Delphi 7. Da sind es 1.6 MB.

Das Problem (mehr oder weniger) : Die erzeugte res gebe ich also nach Delphi, muss dann aber das Updateprogramm neu kompilieren. Doof.

Deshalb die Frage wie man die res in ein laufendes Programm lesen kann.

Im wesentlichen geht es auch darum dem Anwender nur eine Datei zukommen zu lassen. Und ich möchte das mit Delhi machen.

creehawk

KodeZwerg 26. Feb 2022 08:08

AW: Ressourcen Datei zur Laufzeit
 
Ich würde ja einen "Update.exe" schreiben das ein Archiv "Update.zip" einliest, im Zip Archiv eine Konfigurations-datei einlesen damit "Update.exe" weiß was wohin geht. So die basics.
(Update.exe später ausbauen um online versionen zu prüfen....)

KodeZwerg 26. Feb 2022 08:13

AW: Ressourcen Datei zur Laufzeit
 
Zitat:

Zitat von creehawk (Beitrag 1502734)
Wenn ich jetzt mit Sydney ein entsprechendes UpdateProgramm erstelle lande ich bei 16 MB.

Dann stell es auf Release um, landest Du bei 2 - 3 MB.

Uwe Raabe 26. Feb 2022 09:38

AW: Ressourcen Datei zur Laufzeit
 
Zitat:

Zitat von creehawk (Beitrag 1502734)
Ich möchte/muss in verschiedenen Programmen XML Dateien gelegentlich aktualisieren. Ich stelle diese Dateien zusammen und erzeuge eine RES Datei.
Das Programm um die XML am Zielrechner einzuspielen ist simpel. Alle erforderlichen Pfade und andere Daten sind dort in der Registry.

Warum der Umweg über die RES-Datei? Wäre z.B. ZIP hier nicht ein geeigneteres Format? Selbst ohne Kompression (stored) wäre die ZIP-Datei wohl in etwa so groß wie die RES-Datei.

Für im Betrieb zu aktualisierende Dateien ist RES ein denkbar ungeeignetes Vehikel.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 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