![]() |
Delphi SprachDLL nutzen
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe gerade versucht eine zweisprachige Anwendung zu erstellen mittels einer SprachDLL. Aber es klappt nicht. Und ich weiß nicht, wo der Fehler steckt. :wall:
Prinzip ist folgendes: Strings werden im Quelltext als resiurcestrings deklariert. Dies hat zur Folge, dass sie in der Ressource der Exe aufgenommen werden. Dort stehen sie als StringTable mit ID's. Jetzt erstellt man sich eine leere DLL mit einer Ressourcen Datei mit einem identischen StringTable, nur eben in der Zielsprache. Wichtig ist, dass die ID's der Zeichenfolgen mit denen aus der Exe übereinstimmen. Dann benennt man die kompilierte DLL wie die Anwendung nur eben mit einer länderspezifischen Dateiendung. "en2 zum Beipsiel für Englisch. Mit Hilfe der Unit reinit.pas aud dem RichEdit Demo sollte sich dann die Sprache umschalten lassen. Aber genau das geht nicht. :gruebel: Wenn sich das mal bitte jemand ankucken könnte. |
Re: Delphi SprachDLL nutzen
hi,
sieht alles gut aus, bis auf die .rc ich würde mal sagen das kann so nicht klappen, weil du eine rc selber erstellt hast. im richedit demo erledigte das der delphieigene resource dll wizard. entweder du benutzt den, oder du musst es über einen stringtable discardable anders (aber alles leider 'zu fuss') erledigen |
Re: Delphi SprachDLL nutzen
Wie ist das eigentlich, kann es ein, das man den Delphi-SprachManager braucht ?
Kann man seine Anwendung vielleicht "zwingen" eine bestimmte Sprache zu laden ? |
Re: Delphi SprachDLL nutzen
Zitat:
|
Re: Delphi SprachDLL nutzen
hi,
auch kein problem. dann könntest du es wie folgt machen: resource (eng.rc):
Code:
dll (lang_eng.dll):
STRINGTABLE
{ 1, "&Yes" }
Delphi-Quellcode:
aufruf:
library lang_eng;
{$E dll} begin {$R eng.res} end.
Delphi-Quellcode:
var
a: array[0..255] of char; h: hwnd; begin h := loadlibrary('lang_eng.dll'); try if h >= 32 then if loadstring(h, 1, a, sizeof(a)) > 0 then showmessage(strpas(a)) finally freelibrary(h) end; |
Re: Delphi SprachDLL nutzen
Dann brauche ich keine DLL, dann definiere ich mir in einer Ressourcendatei einfach mehrere Stringtables. Dann habe ich es auch in der Exed rin. ;) Das kenne ich ja schon, selber schon gemacht.
|
Re: Delphi SprachDLL nutzen
hi,
der resource dll wizard ist aber nichts anderes |
Re: Delphi SprachDLL nutzen
Dass es nicht klappt, @chris, liegt IMHO nicht an der selbst erstellten RC-Datei. Ich habe bei einem Delphi5-Projekt auch auf den von dir angesprochenen Assistenten verzichtet und die Meldungen usw. per Hand übersetzt und die Sprachdatei auch manuell erstellt. Und es klappte trotzdem.
Allerdings habe ich von Chakotay damals gehört, dass er (ebenfalls mit D6) Probleme mit dieser Technik hatte. Evtl. liegt´s also an der Delphi-Version? |
Re: Delphi SprachDLL nutzen
Ja geht es denn bei dir, was ich oben angehangen habe?
|
Re: Delphi SprachDLL nutzen
Äh, Nein. Aber das wollte ich bei Gelegenheit noch mal richtig ausprobieren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03: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