Autor |
Beitrag |
Sal-9000
      
Beiträge: 30
|
Verfasst: Do 25.06.09 16:38
Hi
Habe da mal wieder eine Frage: gibt es eine Möglichkeit, wie ich mir Ressourcen die ich wärend der Laufzeit zusammenstelle, auch wären der Laufzeit in eine Art Ressourcen-Datei zu packen, so das ich diese dann wärend der Laufenden Session und beim dem nächsten Programmstart einlesen kann?
Bsp.: Ich stelle mir zur Laufzeit eine Sammlung von zb 5 Icons, 2 Bitmaps und einer Soundfile zusammen und will diese dann in einer Datei zusammenfassen, damit sie nicht "lose" im Prog-Verzeichniss rumliegen. Ich möchte aber auch wärend das Prog noch läuft auf diese Ressourcen zugreifen können!
Dachte da an etwas wie eine DLL oder dergleichen zur Laufzeit zu erstellen und zu füllen, nur wie?
Hat jemand eine Idee?? Moderiert von Narses: Topic aus Multimedia / Grafik verschoben am Do 25.06.2009 um 17:13
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Do 25.06.09 16:43
Sal-9000 hat folgendes geschrieben : | damit sie nicht "lose" im Prog-Verzeichniss rumliegen. |
Erstell doch einfach ein Unterverzeichnis, in das du die Dateien speicherst. Wo ist das Problem?
Ressourcen sind nicht dazu da, nachträglich bearbeitet zu werden. Es geht, aber IMHO nur solange das Programm nicht läuft. Du müsstest also eine andere Anwendung erstellen, die die Ressourcen verändert. Und das ist ganz sicher nicht schön.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 25.06.09 16:46
Mein ExeDataStream wäre da vielleicht geeignet, damit kannst du beliebige Daten anhängen. Dafür brauchst du aber natürlich Adminrechte, wenn das Programm unter c:\programme liegt. (Aber die Adminrechte brauchst du natürlich auch für das Verzeichnis der Exe an sich.)
Die normale Vorgehensweise wäre aber die von Yogu genannte. Und bei einem fest installierten Programm gehören die Dateien dann ins Anwendungsdatenverzeichnis.
Man kann theoretisch auch Ressourcen in der Exe verändern, dafür gibt es eine API, aber das ist nicht so ganz einfach und leider wird die Exe nicht mehr kleiner auch wenn die Ressourcen kleiner werden.
|
|
Sal-9000 
      
Beiträge: 30
|
Verfasst: Do 25.06.09 16:50
Yogu hat folgendes geschrieben : | Erstell doch einfach ein Unterverzeichnis, in das du die Dateien speicherst. Wo ist das Problem?
|
1.: Weil ich den direkten Zugriff und damit eine Fehlerquelle ausschalten möchte, und
2.: Fänd ich es hübscher, 2 Dateien weiter zu geben, als zb 30 oder wie in meinem Bsp oben 9
Gibt es nicht irgendeinen "Container", in dem ich sie bündeln und dann wie "normale" Ressourcen benutzen kann? ICh meine ... man kann doch auch Icon-Libs erstellen ... müsste doch mit gemischtem Inhalt auch klappen, oder?
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 25.06.09 16:53
Wie gesagt, nimm einfach meinen Stream, da kannst du hineinlegen was du willst wie in einen normalen TStream, und das Ding hängts automatisch an bzw. löscht es wenn die Größe auf 0 gesetzt wird.
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Do 25.06.09 17:06
Sal-9000 hat folgendes geschrieben : | 1.: Weil ich den direkten Zugriff und damit eine Fehlerquelle ausschalten möchte, und
2.: Fänd ich es hübscher, 2 Dateien weiter zu geben, als zb 30 oder wie in meinem Bsp oben 9 |
Ok, wenn dein Programm sonst recht klein ist, und du es auch weniger erfahrenen Computernutzern geben willst, mag das die einfachere Möglichkeit sein. Aber sonst stellt sich die Frage, warum du es nicht einfach archivierst. Dann musst du nur eine Datei weitergeben, und der Anwender sieht außerdem gleich, wieso das Programm denn so groß ist. Außerdem können Benutzereinstellungen besser weitergegeben werden, wenn die Dateien einfach zu erreichen sind.
Bzw.: Die Dateien, die von Anfang an dabei sind, kannst du ja mit einem Ressourceneditor bzw. dem Ressourcencompiler von Delphi anfügen. Das Programm kann dann zur Laufzeit, wenn etwas geändert wurde, Kopien der Ressourcen in Dateien speichern. So braucht man nur die erstellten Dateien zu löschen, um den Urzustand des Programmes zu bekommen.
|
|
Sal-9000 
      
Beiträge: 30
|
Verfasst: Do 25.06.09 17:24
@jaenicke:
Hab mir mal deinen Source geladen und schau ihn mir in Ruhe an, danke schonmal!
@Yogu:
Der gedanke mit dem archivieren kam mir auch schon, hätte es eben nur schön gefunden, wenn ich die zusammengestellten Reccourcen dynamisch in eine einzige Datei packen kann.
Die Idee von jaenicke ist auf jeden fall schon mal gut, werde sie dann auch heute abend mal ausprobieren! Aber dazu vorab schonmal ne frage: Bekomme ich nicht schwierigkeiten mit Vierenscanner, wenn ich das auf die Art löse?
Davon ab, ob das nun für mein Prog noch sinnvoll ist, oder nicht, grundprinzipiell würd ich doch gerne noch wissen, ob es nciht doch ieine möglichkeit gibt, mir eine art ressourcen-Datei zur Laufzeit zu erstellen ..... könnt ich die nciht (bin gerade durch jaenicke inspiriert  ) alle mittles TStream in eine File packen und auch auslesen? Also ... in eine andere File, als die Exe selbst?
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 25.06.09 17:28
Sal-9000 hat folgendes geschrieben : | Bekomme ich nicht schwierigkeiten mit Vierenscanner, wenn ich das auf die Art löse? |
Wenn du die Exe veränderst, werden Virenscanner natürlich misstrauisch.
Zudem brauchst du Adminrechte, wenn du die Exe oder Dateien im Verzeichnis der Exe verändern willst.
Sal-9000 hat folgendes geschrieben : | alle mittles TStream in eine File packen und auch auslesen? Also ... in eine andere File, als die Exe selbst? |
Sicher kannst du das. Einfach z.B. immer die Größenangabe vor jedes Datenpaket usw., oder ein richtiges Inhaltsverzeichnis an den Anfang der Datei (des Streams). Dafür gibt es ja TFileStream.
Aber wenn du die Datei ins Verzeichnis der Exe legen willst, brauchst du auch wieder Adminrechte.
|
|
Sal-9000 
      
Beiträge: 30
|
Verfasst: Do 25.06.09 18:36
Ich danke euch nochmals für eure Antworten .. nun kann ich endlich wieder weiterbasteln
Werde mich nun mal mit TFileStream auseinandersetzen!
Schönen Abend wünsch ich noch 
|
|
|