Zitat von
lhmultimedia:
@vsilverlord Falsch habe ich nicht vor.
Ich habe vor in eine Datei Namen von Strings zu schreiben.
Dann wird im Programm die Sprachdatei angegeben und die jeweiligen Strings werden durch die strings in der 2. Datei ersetzt.
Warum machst du das zB nicht über Ressourcen?
Code:
// german.rc
STRINGTABLE {
1, "Deutsch"
2, "Datei"
3, "Öffnen"
4, "Speichern"
...
}
Dann per brcc32 in eine .res-Datei compilen, die du zB in eine german.dll einbindest, die du dann im Programm per LoadLibrary lädst und dann auf die Ressourcen zugreifst?
Delphi-Quellcode:
// ID = Index aus StringTable der .rc Datei
// LangLibHnd = Handle der DLL, Rückgabewert von LoadLibrary
function TLanguageClass.GetString (ID: Integer; LangLibHnd: Integer = -1):
String;
var
ResPtr: PChar;
LangHnd,
ResLen: Integer;
begin
ResLen := 1024000;
if LangLibHnd = -1
then
LangHnd := FLangHandle
else
LangHnd := LangLibHnd;
GetMem (ResPtr, ResLen);
try
if LoadString (LangHnd, ID, ResPtr, ResLen) = 0
then
Result := '
? ' + inttostr (ID) + '
?'
else Result := StrPas (ResPtr);
finally
FreeMem (ResPtr);
end;
end;
ShowMessage (Language.GetString(3)); // Öffnen