Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Prism resourcestring zur laufzeit auslesen und neu befüllen (https://www.delphipraxis.net/136540-resourcestring-zur-laufzeit-auslesen-und-neu-befuellen.html)

Digielm 2. Jul 2009 13:25


resourcestring zur laufzeit auslesen und neu befüllen
 
Hallo,

mal eine Frage

Habe ich eine Change innerhalb der Laufzeit von einem Programm die resourcestring einzulesen und diese auszuwerten bzw. diese auch mit anderen Strings zu befüllen ??

himitsu 2. Jul 2009 13:42

Re: resourcestring zur laufzeit auslesen und neu befüllen
 
Auslesen geht einfach, aber befüllen ist unmöglich, da eine EXE sich nicht selber verändern/umschreiben kann.

MSDN-Library durchsuchenLoadString oder via Delphi-Referenz durchsuchenResourceString

Delphi-Quellcode:
ResourceString
  abc = '123';

s := abc;
dieses ist fast wie Const, blos daß die String-Konstante an einer anderen Stelle gespeichert wird.

Reinhard Kern 2. Jul 2009 23:06

Re: resourcestring zur laufzeit auslesen und neu befüllen
 
Zitat:

Zitat von Digielm
Hallo,

mal eine Frage

Habe ich eine Change innerhalb der Laufzeit von einem Programm die resourcestring einzulesen und diese auszuwerten bzw. diese auch mit anderen Strings zu befüllen ??

Hallo,

alles an seinem Ort: Resourcen sind Read-Only-Texte (oder anderes), die quasi mitgeliefert werden und nicht veränderbar sind, solange nicht jemand eine neue Exe mit möglicherweise geänderten Texten kompiliert. Insofern sind Resourcen genauso Compile-Time-definiert wie Stringkonstanten im Programm, aber doch besser zu handhaben als in der Source verstreute Texte, z.B. beim Wechsel der Sprache. Ausserdem gibt es Resource-Editoren, mit denen man in einer fertigen Exe oder Dll die Texte ändern kann, aber das sind eben Spezialwerkzeuge wie der Compiler selbst.

Texte, die geändert werden können, gehören in eine Konfigurationsdatei, also Ini-Datei, config-Datei oder Registry. Entweder liefert man die mit oder man füllt sie beim ersten Start aus Resourcen.

Wenn der geänderte Text nicht persistent sein soll, braucht man garnichts weiter, man weist ihn einfach der Variablen zu.

Gruss Reinhard

alzaimar 3. Jul 2009 06:20

Re: resourcestring zur laufzeit auslesen und neu befüllen
 
Zitat:

Zitat von himitsu
Auslesen geht einfach, aber befüllen ist unmöglich, da eine EXE sich nicht selber verändern/umschreiben kann.

Über einen Trick geht es schon:
1. Eigene EXE umbenennen (in <Name>_OLD.EXE)
2. Kopie der umbenannten EXE erstellen: <Name>.EXE
3. In der <Name>.EXE die Resourcen beliebig ändern.
4. Beim Programmestart ein etwaig vorhandenens <Name>_OLD.EXE löschen (oder über Tricks beim Programmende)

Man ändert zwar nicht direkt in der EXE, aber immerhin: beim nächsten Start sind die geänderten Texte vorhanden.

himitsu 3. Jul 2009 07:09

Re: resourcestring zur laufzeit auslesen und neu befüllen
 
Zitat:

Zitat von alzaimar
3. In der <Name>.EXE die Resourcen beliebig ändern.

5. Virenscanner beruhigen (der sollte sich hoffentlich beschweren)


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