AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Sprachdatei beim Compilieren mit einbinden
Thema durchsuchen
Ansicht
Themen-Optionen

Sprachdatei beim Compilieren mit einbinden

Ein Thema von Aike · begonnen am 6. Mai 2007 · letzter Beitrag vom 7. Mai 2007
Antwort Antwort
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#1

Sprachdatei beim Compilieren mit einbinden

  Alt 6. Mai 2007, 18:21
Hallöchen,

ich möchte gerne (just for fun) Sprachdateien für mein Programm anlegen, in denen die ganzen Komponenten-Captions gespeichert werden sollen und beim Compilieren soll das dann ausgelesen und gespeichert werden. Ich schätze mal, dass eine .res-Datei die richtige Lösung ist, aber ich kenne mich da nicht so aus. Die Dateien sollen so aussehen:

Delphi-Quellcode:
//Datei: deutsch.lang (oder so)
lblHallo.Caption=Hallo
lblTschuess.Caption=Ade
btnStart.Caption=Start
...

//Datei: english.lang (oder so)
lblHallo.Caption=Hello
lblTschuess.Caption=Bye
...
So in der Art Die Dateien sollen aber nicht mitgeliefert werden müssen mit der exe, müssen also beim Compilieren mit eingebunden werden.

Liebe Grüße ...
Achim
  Mit Zitat antworten Zitat
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, 19: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
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#3

Re: Sprachdatei beim Compilieren mit einbinden

  Alt 6. Mai 2007, 19:32
Wow, das sieht ja super aus, aber muss man dann nicht die dll mitliefern?
Achim
  Mit Zitat antworten Zitat
hsbc

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

Re: Sprachdatei beim Compilieren mit einbinden

  Alt 6. Mai 2007, 19:40
Ja, die DLL's müssen mitgeliefert werden, aber das sollte ja keine Probleme bereiten.

mfg
Herbert
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#5

Re: Sprachdatei beim Compilieren mit einbinden

  Alt 6. Mai 2007, 19:49
Bäh, das ist aber doof Das macht die Sache eher komplizierter Eigentlich wollte ich die Ressource-Dateien schon so nutzen, dass es in die exe mit eingebunden wird.
Achim
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Sprachdatei beim Compilieren mit einbinden

  Alt 6. Mai 2007, 20:35
Müsste das nicht so gehen? Ich bin mir nicht sicher, bin nicht so Fit in sachen compiler-direktiven^^

Delphi-Quellcode:
implementation

{$DEFINE 'lang_de'} // Auskommentieren für englisches Build

{$R *.dfm}

{$IFDEF lang_de} // Deutsch
{$R DEUTSCH.RES} 
{$ELSE}          // Englisch
{$R ENGLISCH.RES}
{$ENDIF}
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#7

Re: Sprachdatei beim Compilieren mit einbinden

  Alt 7. Mai 2007, 21:23
Also die Anführungsstriche bei "lang_de" müssen weg, aber es funktioniert dann immer noch nicht. Er meint, ich hätte duplicate ressource(s). *Seufz* Und wenn ich schon bei Beginn der implemenation die Sprache angeben muss, kann ich ja nachträglich gar nicht mehr die Sprache ändern, oder?
Achim
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:44 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