![]() |
Resourcestring-Name in der Laufzeit erstellen
Hallo an alle Delphi-Spezialisten,
ich benötige euren Rat, da ich an diesem Punkt feststecke. Ich benutze eine Unit mit resourcestrings (ca. 50 Einträge, können noch mehr werden). Abhängig, an welcher Stelle im Programm ich mich befinde, soll an einer definierten Position im Hauptfenster ein entsprechender resourcestring an ein Label übergeben werden. Folgendes Problem tritt auf: Um den entsprechenden resourcestring anzeigen lassen zu können, baue ich während der Laufzeit den Namen des resourcestrings zusammen. In der dafür zuständigen Variable steht dann auch z.B. rscString0038. Nun möchte ich den rscString0038 an das Label übergeben. Dort wird aber nur 'rscString0038' ausgegeben, da in der Stringvariable der resourcestring-Name mit den Hochkommas steht. Die Funktion Pos liefert mir bei der Suche nach dem Hochkomma (') kein Ergebnis (=0). Was kann ich tun, dass der zusammengebaute resourcestring als solcher auch gelesen wird? :roll: Vielen Dank für eure Bemühungen im Voraus. PS: Ich habe schon im Internet recherchiert, aber nichts passendes gefunden. |
AW: Resourcestring-Name in der Laufzeit erstellen
Das geht nicht! ResourceStrings werden vom Compiler ähnlich behandelt wie Konstanten. Die Referenz wird schon beim Compilieren aufgelöst.
Du kannst dein Problem z.B. mit einer StringList (Name-Value) lösen, die zur Laufzeit aus den ResourceStrings aufgebaut wird. Alternativ kannst du auch auf FindResource/LoadResource (siehe MSDN) ausweichen. |
AW: Resourcestring-Name in der Laufzeit erstellen
Hallo Uwe,
danke für die Nachricht. Ich bin noch nicht so lange mit Delphi vertraut. Wie kann ich das mit der Stringlist und den vorhandenen resourcestrings machen? Vielen Dank, Jean |
AW: Resourcestring-Name in der Laufzeit erstellen
Hallo nochmal an alle Spezialisten,
ich will es hier noch einmal anders formulieren, da ich denke, dass mein Anliegen eventuell falsch verstanden wurde. Ich habe eine Reihe von definierten Resourcestrings. z.B. rscString001: 'Hello'; rscString002: 'World'; . . . rscString055: 'Good bye'; . . Übergebe ich an Label1.caption:= rscString055; dann wird mir auch "Good bye" angezeigt. Nun baue ich aber, bedingt durch verschiedene Positionen im Programm, den Namen zum Aufrufen des existierenden Resourcestrings auf, d.h. der Aufrufname wird über Variablen zusammengesetzt, also wie zum Beispiel oben (sRes := 'rscString' + sNr:= '055' = rscString055). Das wäre jetzt der Name eines vorhanden Resourcestrings der in der Variable steht. Das Problem ist nur, der Name steht mit Hochkommas in der Variable ('rscString055'). Wenn ich das an das Label übergeben, dann wird natürlich nur dieser Strings angezeigt und nicht der eigentliche Resourcestring. Ich hoffe, dass mein Problem jetzt richtig verstanden wird. Ich hoffe auf eure Ideen. Vielen Dank. |
AW: Resourcestring-Name in der Laufzeit erstellen
Dein Anliegen wurde schon richtig verstanden und es geht nicht so wie du es dir denkst.
An dieser Stelle:
Delphi-Quellcode:
sieht der Compiler, was du machst, und wandelt den Code quasi um in
Label1.caption:= rscString055;
Delphi-Quellcode:
Der Name der Konstante kommt später gar nicht mehr vor.
Label1.caption:= 'Good bye';
Etwas anderes ist es, wenn du die Daten aus einer Datei liest: Dann kannst du zur Laufzeit die Namen und Werte speichern und mit einer kleinen Suche jederzeit den Wert zu einem Namen herausfinden. |
AW: Resourcestring-Name in der Laufzeit erstellen
Hallo jfheins,
war mir nicht sicher, ob es richtig verstanden wurde. Aber anscheinend wohl doch. Vielen Dank nochmal für den Hinweis. Schade, da muss ich nun auf eine Alternativmöglichkeit ausweichen. Also danke nochmal an das Forum. Habe hier wirklich schon gute Ansätze gefunden. Viele Grüße, Jean |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 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