Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Delphi SprachDLL nutzen (https://www.delphipraxis.net/15804-delphi-sprachdll-nutzen.html)

Luckie 4. Feb 2004 12:59


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.

chris 4. Feb 2004 14:24

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

MrKnogge 4. Feb 2004 16:11

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 ?

Luckie 4. Feb 2004 16:19

Re: Delphi SprachDLL nutzen
 
Zitat:

Zitat von chris
entweder du benutzt den, oder du musst es über einen stringtable discardable anders (aber alles leider 'zu fuss') erledigen

Das ist das Problem, ich habe ihn nicht in meiner Delphi Version. :? Was nun?

chris 4. Feb 2004 17:08

Re: Delphi SprachDLL nutzen
 
hi,

auch kein problem.

dann könntest du es wie folgt machen:

resource (eng.rc):

Code:
STRINGTABLE
{
 1, "&Yes"
}
dll (lang_eng.dll):

Delphi-Quellcode:
library lang_eng;
 {$E dll}
begin
 {$R eng.res}
end.
aufruf:

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;

Luckie 4. Feb 2004 17:12

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.

chris 4. Feb 2004 17:15

Re: Delphi SprachDLL nutzen
 
hi,

der resource dll wizard ist aber nichts anderes

MathiasSimmack 4. Feb 2004 18:53

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?

Luckie 5. Feb 2004 01:31

Re: Delphi SprachDLL nutzen
 
Ja geht es denn bei dir, was ich oben angehangen habe?

MathiasSimmack 5. Feb 2004 08:22

Re: Delphi SprachDLL nutzen
 
Äh, Nein. Aber das wollte ich bei Gelegenheit noch mal richtig ausprobieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 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