Einzelnen Beitrag anzeigen

hsbc

Registriert seit: 28. Jan 2004
Ort: Krems/Donau
404 Beiträge
 
Delphi 7 Professional
 
#2

Re: Sprachdatei beim Compilieren mit einbinden

  Alt 6. Mai 2007, 18:00
Hallo Aike,

ich habe das bei einem meiner (kleineren) Projekte so gelöst:

1. Für jede Sprache eine Ressource erstellen

Beispiel:

Delphi-Quellcode:
   STRINGTABLE
   {
  100, "&Datei"
  101, "&Beenden"
  102, "&Info über"
  ... usw.
   }
Speichern unter z.B. DEUTSCH.RS und danach mit brcc32 compilieren
Wie gesagt, das gleiche für alle anderen Sprachen.

2. Für jede Sprache DLL erstellen:

Beispiel:

Delphi-Quellcode:
   library deutsch;

   uses
     SysUtils;

   {$R DEUTSCH.RES}

   begin
   end.
Speichern unter z.B. deutsch.dpr, danach compilieren
Wiederum für jede Sprache ...

3. Einbinden in dein Programm:

Delphi-Quellcode:
   private
     sDLLName: string;
     hDLL: THandle;
     function GetStringFromRes(iID: integer): string;
     procedure SprachAuswahl;
   public
   end;

   implementation
 
   {$R *.dfm}

   function TForm1.GetStringFromRes(iID: integer): string;
   var
     iCnt: integer;
     szText: array[0..29] of char;
   begin
     iCnt := LoadString(hDLL, iID, szText, SizeOf(szText)-1);
     if iCnt > 0 then GetStringFromRes := StrPas(szText)
                 else GetStringFromRes := 'Kein Eintrag';
   end;

   procedure TForm1.SprachAuswahl;
   begin
     // bei Sprache deutsch:
     SDLLName := 'DEUTSCH.DLL'
     // bei Sprache englisch z.B.: SDLLName := 'ENGLISH.DLL'
     hDLL := LoadLibrary(PChar(sDLLName));

     // ab hier zuordnen, z.B.:
     Datei.Caption := GetStringFromRes(100);
     Beenden.Caption := GetStringFromRes(101);
     // usw.
   end;

   // Zum Schluss (ev. im FormDestroy) nicht vergessen, die DLL wieder entladen
   if hDLL <> 0 then FreeLibrary(hDLL);
Ich habe das Ganze mal irgendwann irgendwo gefunden und auf meine Bedürfnisse angepasst - funktioniert einwandfrei.

mfg
Herbert
  Mit Zitat antworten Zitat