AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Externe Resource zur Laufzeit verwenden

Ein Thema von messinger · begonnen am 14. Mär 2012 · letzter Beitrag vom 1. Feb 2016
Thema geschlossen
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#1

AW: Externe Resource zur Laufzeit verwenden

  Alt 14. Mär 2012, 16:03
Ansonsten:
Wenn du keine (richtigen) Resourcen verwenden willst, dann nimm was Anderes. (zip, xml oder sonstewas)
Ein Therapeut entspricht 1024 Gigapeut.
 
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#2

AW: Externe Resource zur Laufzeit verwenden

  Alt 14. Mär 2012, 17:30
Ansonsten:
Wenn du keine (richtigen) Resourcen verwenden willst, dann nimm was Anderes. (zip, xml oder sonstewas)
Oder: Nimm etwas anderes und binde es als richtige Resource ein.

Wenn Du in Deinem Programm z.B. mehrere ClientDataSets oder MemTables verwendest und dazu noch ein paar TMemIni's, dann speichere ein Set davon mittels SaveToStream in ein Zip-File (was noch nicht einmal so heißen muss). Abbrevia ist aktuell, Open Source und unterstützt Delphi bis XE2 (auch 64bit). Diese Zip-Datei kannst Du auch mit einem beliebigen Programm weiter bearbeiten und/oder auch mit einem Passwort schützen, wenn genau das nicht durch Fremde passieren soll. Die Zip-Vorlage bindest Du als Resource mit in das Programm ein, das es dann bei Bedarf als Initialisierung am Zielsystem auspackt. Mit diesem Archiv kannst Du nur lesend, aber auch schreibend arbeiten und so z.B. ein compressed, encrypted Single-File-Database-System zum Nulltarif bauen (mit TkbMemTable 7 auch mit SQL-Syntax). Ohne zusätzliche DLL. Kein bischen.

Also ich wäre davon nun überzeugt
Andreas
 
ASM

Registriert seit: 15. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Externe Resource zur Laufzeit verwenden

  Alt 15. Mär 2012, 13:21
Wenn Du in Deinem Programm z.B. mehrere ClientDataSets oder MemTables verwendest und dazu noch ein paar TMemIni's, dann speichere ein Set davon mittels SaveToStream in ein Zip-File (was noch nicht einmal so heißen muss). Ohne zusätzliche DLL. Kein bischen.

Also ich wäre davon nun überzeugt
Also ich ganz und gar nicht. Denn das geht ja ganz offensichtlich an dem vorbei, was hier erfragt worden ist, und ist außerdem einfach nur sehr unprofessionell.
1) Er hat doch deutlich geschrieben, dass er einfach nur Glyphs und/oder Captions von Buttons als Resourcen speichern will (und selbst im Falle komplexerer Resourcen wäre das nach der unten folgenden Lösung kein Problem).
2) Zitat: "Die Zip-Vorlage bindest Du als Resource mit in das Programm ein"
Vor allem aber hat er doch unmissverständlich erklärt, dass er die Resourcen eben gerade nicht in die EXE compilieren will.

Optimale Lösung, wie bereits vorgeschlagen worden ist: Erstelle eine reine Resourcen-DLL.
Code:
library ResLib;
 
{$R ResDLL.res} // erstellt mit "brcc32.exe ResDLL.rc"

begin
end.
Binde dort mit der ResDLL.rc -> ResDLL.res alle benötigten Icons, Bitmaps, usw. ein und die Strings entweder als ein Textfile (siehe RCDATA) mit den aufgelisteten Strings oder - fast noch einfacher - in der Struktur einer Stringtable.

Lade diese Resourcen-DLL dann dynamisch in das eigentliche Programm:
Code:
ResLibHandle := Loadlibrary(PChar(ResDLLfilename));
Mit diesem Handle lässt sich mit einem ResourceStream, einem LoadIcon(), LoadBitmap() bzw. einem GetResString() jede der verschiedenen Resourcen mühelos aus der Resourcen-DLL zur Verwendung im Programm herausholen

Durch einfachen Austausch der DLL gegen eine neue (mit gleichen Filenamen) und mit verschiedenen (aber mit jeweils gleichem Namen bezeichneten!) Resourcen ist die Aufgabe absolut flexibel, ohne großen Aufwand, schnell und unproblematisch gelöst.

Die Resourdcen-DLL kann ratz-fatz nach dem gerade aktuellen Bedarf erstellt werden, wozu allein nur die RC-Datei entsprechend verändert und als RES-Datei neu in die DLL eingebunden werden muss.

Das eigentliche Programm braucht für alle diese verschiedenen Resourcen-DLLs überhaupt nicht verändert zu werden.

Geändert von ASM (15. Mär 2012 um 13:22 Uhr) Grund: Rechtschreibfehler korrigiert
 
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#4

AW: Externe Resource zur Laufzeit verwenden

  Alt 15. Mär 2012, 13:37
einfach nur sehr unprofessionell.
Es war (m)ein Vorschlag, die Sache etwas anders anzugehen. Wenn der Fragende etwas besser als Du darin geübt ist, sinnentnehmend zu lesen, wird er für sich schon die richtige Auswahl treffen.
Andreas
 
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Externe Resource zur Laufzeit verwenden

  Alt 15. Mär 2012, 13:47
Es war (m)ein Vorschlag, die Sache etwas anders anzugehen.
Also wenn jemand Texte und Grafiken will, eine verschlüsselte Datenbank anzubieten, ist das auch mMn schon nicht mehr "die Sache" anders anzugehen, sondern eine ganz andere Sache anzugehen. Ich denke ASM hatte nur sofort des Eindruck, dass Du eigentlich gar nicht wirklich auf die Frage eingehen, sondern mit Deinem Wissen angeben willst. Dieser Eindruck ist auch bei mir irgendwie nicht gaz wegzuwischen
 
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#6

AW: Externe Resource zur Laufzeit verwenden

  Alt 15. Mär 2012, 15:24
mit Deinem Wissen angeben willst. Dieser Eindruck ist auch bei mir irgendwie nicht gaz wegzuwischen
Wenn Du - wie ich - unter "angeben" meinst, dass ich meine Sichtweise nicht für mich behalten möchte, dann brauchst Du Dir nichts weg zu wischen, dann ist das durchaus beabsichtigt Und was das "asm" angeht, so wäre es IMO gut, wenn er es so hält wie bisher und nur sporadisch postet: Blockwart- Attitüden ala "ich sag jetzt mal was Sache ist" sind irgendwie dämlich. Da hilft es auch nicht, als erster das Wort professionell in den Mund zu nehmen. Das ist es nicht.

Zur Sache selbst: Mein Ansatz zielt nicht nur auf eine DB-Lösung, sondern auf einen "Daten-Eimer". In Erweiterung zu der Resourcen-Lösung hat die Zip-Lösung ein paar Vorteile: Inhalte werden komprimiert und bei Bedarf verschlüsselt, können bei Bedarf sehr einfach ausgetauscht werden, bieten eine interne Ordnerstruktur und aus Delphi-Sicht steht alles über Streams zur Verfügung. Man braucht weder ein MS-SDK (hat der Borland-Res-Compiler noch das Problem mit den Grafiken? Ich benutze ihn seit Jahren nicht mehr.), noch muss man mit einem Res-Viewer hantieren.

Das Einbinden in die Exe war nur als Initialisierung bei z.B. portablen Apps gedacht. Meinetwegen kann man es auch im Setup einpacken.

Und wenn ich mir es recht überlege, kann man das auch schon aus dem angemaulten Post entnehmen. Wenn man kann. Schau halt nach.
Andreas
 
tcoman
(Gast)

n/a Beiträge
 
#7

AW: Externe Resource zur Laufzeit verwenden

  Alt 1. Feb 2016, 14:59
Ich glaube nicht, dass ein Forum ein pures Frage- und
Antwortspiel sein sollte.

neo4a hat weitere Information geliefert, ohne erst den
Rest der ehrenwerten DP-Gemeinde zu kontaktieren.

ASM hat exakt das beantwortet, was gefragt wurde. Er
ist ein guter Zuhoerer und das bewiesen.

Unverstaendlich, dass er nicht ganz so geniale Menschen
runtermachen muss.

@Luckie
Jetzt kriege ich bestimmt wieder eine Nachricht, die
Leichen im Keller zu lassen.
 
Thema geschlossen

 

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 05:21 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