![]() |
Stringtable mit StringID statt IntegerID möglich?
Hallo!
Ich würde gerne eine Stringtable verwenden um mein Programm in verschiedenen Sprachen zu compilieren. Ich erstelle also z.B. eine Tabelle in Deutsch und eine Englisch und je nachdem in welcher Sprache das Programm kompiliert werden soll binde ich die eine oder die andere Datei in das Programm ein. Eine "normale" Stringtable sieht ja so aus:
Delphi-Quellcode:
Nun würden die Tabellen aber sehr viele Strings enhalten und die Verwendung der Integer-IDs im Programm könnte recht unübersichtlich sein. Wenn ich z.B. Button.Caption := GetString(4782); verwende weiß ich in 2 Tagen nicht mehr, ob 4782 wirklich die korrekte ID ist und ich muss in der Tabelle nachsehen. Es wäre praktischer, wenn man die Werte mit einer String-ID statt einer Integer-ID aufrufen könnte:
STRINGTABLE
BEGIN 1, "Weiter" 2, "Zurück" 3, "Abbrechen" END // Funktion zum auslesen der Strings function GetString(ID: Integer): string; var p: PChar; begin p := StrAlloc(256); try if LoadString(hInstance, ID, p, 255) <> 0 then Result := p else Result := ''; finally StrDispose(p); end; end; // String zuweisen Button.Caption := GetString(2);
Delphi-Quellcode:
Die Funktion LoadString() arbeitet jedoch nur mit Integer-IDs und ich habe keine Funktion gefunden die String-IDs akzeptiert. Außerdem kann lässt sich die Stringtable mit String-IDs nicht kompilieren. Ist es also irgendwie möglich String-IDs zu verwenden? Gibt es hierfür eine alternative zur normalen Stringtable?
STRINGTABLE
BEGIN str_next, "Weiter" str_back, "Zurück" str_cancel, "Abbrechen" END // String zuweisen Button.Caption := GetString('str_cancel'); Besten Dank Ares |
Re: Stringtable mit StringID statt IntegerID möglich?
Wie wäre es mit:
Delphi-Quellcode:
und dann später:
const
str_next_ID = 1; str_back_ID = 2; str_cancel_ID = 3;
Delphi-Quellcode:
// String zuweisen
Button.Caption := GetString(str_back_ID); |
Re: Stringtable mit StringID statt IntegerID möglich?
Es wäre zwar etwas aufwändig, aber eine Lösung:
Konstanten für die IDs anlegen.
Delphi-Quellcode:
... zu spät ;)
const
_StrNext = 1; _StrPref = 2; _StrNo = 3; ... |
Re: Stringtable mit StringID statt IntegerID möglich?
Zitat:
|
Re: Stringtable mit StringID statt IntegerID möglich?
Ok, das ist natürlich eine Möglichkeit. Aber wie du schon sagst recht aufwändig. Wenn es keine andere Möglichkeit gibt, werde ich das wohl so machen. Aber vielleicht kennt ja jemand noch eine elegantere Lösung? :-)
|
Re: Stringtable mit StringID statt IntegerID möglich?
doch, aber nicht für voll genommen :oops:
|
Re: Stringtable mit StringID statt IntegerID möglich?
Zitat:
![]() Dann musst du dich überhaupt nicht mehr um IDs, seien es Strings oder Integer, kümmern. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 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