AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Resourcestring-Name in der Laufzeit erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Resourcestring-Name in der Laufzeit erstellen

Ein Thema von Jean · begonnen am 24. Mär 2013 · letzter Beitrag vom 24. Mär 2013
Antwort Antwort
Jean

Registriert seit: 15. Mär 2013
10 Beiträge
 
#1

Resourcestring-Name in der Laufzeit erstellen

  Alt 24. Mär 2013, 09:51
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?

Vielen Dank für eure Bemühungen im Voraus.

PS: Ich habe schon im Internet recherchiert, aber nichts passendes gefunden.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.006 Beiträge
 
Delphi 12 Athens
 
#2

AW: Resourcestring-Name in der Laufzeit erstellen

  Alt 24. Mär 2013, 13:07
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Jean

Registriert seit: 15. Mär 2013
10 Beiträge
 
#3

AW: Resourcestring-Name in der Laufzeit erstellen

  Alt 24. Mär 2013, 13:17
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
  Mit Zitat antworten Zitat
Jean

Registriert seit: 15. Mär 2013
10 Beiträge
 
#4

AW: Resourcestring-Name in der Laufzeit erstellen

  Alt 24. Mär 2013, 13:57
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.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

AW: Resourcestring-Name in der Laufzeit erstellen

  Alt 24. Mär 2013, 14:43
Dein Anliegen wurde schon richtig verstanden und es geht nicht so wie du es dir denkst.
An dieser Stelle:
 Label1.caption:= rscString055; sieht der Compiler, was du machst, und wandelt den Code quasi um in
 Label1.caption:= 'Good bye'; Der Name der Konstante kommt später gar nicht mehr vor.

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.
  Mit Zitat antworten Zitat
Jean

Registriert seit: 15. Mär 2013
10 Beiträge
 
#6

AW: Resourcestring-Name in der Laufzeit erstellen

  Alt 24. Mär 2013, 15:39
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
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 18:51 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