Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Programm übersetzbar machen? (https://www.delphipraxis.net/9269-programm-uebersetzbar-machen.html)

DSeven 22. Sep 2003 15:43


Programm übersetzbar machen?
 
Hallo

Wie kann ich mein programm übersetzbar machen? Ich habe mir schon mal eine methode geschrieben die die Texte aus ner Ini läd aber ist viel zu langsam wenn es viele einträge gibt.

Gibt es eine Komponente oder sonstiges?
Ich habe schon von resource strings in DLL's gehört oder so aber wie geht das kennt jemmand ein Tutorial?

Danke :)

Tim.exe 23. Sep 2003 07:14

Re: Programm übersetzbar machen?
 
Guck dir mal "SMLPack" von sunisoft.com an. Die Komp arbeitet zwar auch mit *.ini's aber vielleicht ist es da ja etwas schneller.

Nimoee 23. Sep 2003 07:26

Re: Programm übersetzbar machen?
 
Hallo,

wir führen unsere ganzen Textsteuerung ( Übersetzung ) mit INI's durch.
Dass das Ganze langsam sei ist ein Gerücht!
Du lädtst die Texte während die Forms erstellt werden. Die Ini Datei nur einmal öffen, alle Texte lesen ..., Ini Datei zu.
Um die Performance zu erhöhen, werden die Forms erst erzeugt, wenn sie gebraucht werden. ( Keine dynamische Forms ).
Die Texte sind für die verschieden Sprachen durch senkrechte Striche geteilt. Andere Methoden ( registry oder Datenbanken ) haben wir hier alle schon probiert und sind durchgefallen. Wir verwalten so ungef
Geht prima.

Hier Auszüge aus unserer source:

Delphi-Quellcode:
Procedure assign_ini;
Begin
     fini1:=tinifile.create(ini_path+'xxxxxxx.ini');
end;

Procedure close_ini;
Begin
     fini1.free;
end;

Function lese_sprache(gruppe,eintrag:string;sep:char;sprache:integer):string;
var a:string;n:integer;
Begin
   int_sep:=sep;
   int_lang:=sprache;
   a:=fini1.readstring(gruppe,eintrag,'??');
   if a='??' then
      Begin
         lese_sprache:='??';
         exit;
      end;
   n:=1;
   while n<sprache do
      Begin
         delete(a,1,pos(sep,a));
         inc(n);
      end;
//Zeile eingefügt am 16.01.2003 ~ markiert führendes Blank
//wird hier durch blank ersetzt
   For n:=1 to length(a) do if a[n]='~' then a[n]:=' ';

   If pos(sep,a)<>0 then lese_sprache:=copy(a,1,pos(sep,a)-1)
      else lese_sprache:=a;
end;
Nimoee

Chewie 23. Sep 2003 15:16

Re: Programm übersetzbar machen?
 
Ich denk mal, DLLs mit Resourcen-Strings sind schneller. Diese werden unter anderem für das Windows-eigene Eventlog genutzt.

Nimoee 23. Sep 2003 17:51

Re: Programm übersetzbar machen?
 
Hallo,

hier kommts letztlich garnicht darauf an ob das jetzt ein paar millisekunden früher oder später fertig ist. Ini Dateien sind leicht zu warten und übersichtlich:
Beispiel:

[Spannungsform]
Form_name=Ausgangsspannung und Frequenz
Spannungsstufe1=Spannungsstufe 1
Spannungsstufe2=Spannungsstufe 2
Spannungsstufe3=Spannungsstufe 3
Frequenz1=Frequenz 1
Frequenz2=Frequenz 2
Gruppe1=Spannungsauswahl
Gruppe2=Frequenzauswahl
Bn1=Übernehmen
Bn2=Abbruch

Das kriegst du doch mit was anderem garnicht hin!

Nimoee

Ganymed 25. Sep 2003 10:04

Re: Programm übersetzbar machen?
 
INI-Files sind viel zu langsam, platz- und zeitraubend und viiiiel zu umsändlich...

Einfach alle Texte in Resourcestrings auslagern!
Statt
Code:
Edit1.Text := 'Hello World';
einfach
Code:
resourcestring
  RES_EDIT1_TEXT = 'Hello World!';

{...}

  Edit1.Text := RES_EDIT1_TEXT;
Die Übersetzung ist unter Zuhilfenahme eines geeigneten Tools (z.B. Multilizer) ein Klacks. Wer sich so ein teures Tool nicht leisten will, holt sich nen kostenlosen Resource-hacker und ändert dort die String-Tables der fertigen EXE-Datei... (Ist genau so sicher, aber nicht so bequem).

P.S. Auf der Multilizer-Seite gibt's ein Tut., wie man Anwendungen Multi-Sprachfähig hinbekommt...

DSeven 25. Sep 2003 20:02

Re: Programm übersetzbar machen?
 
Hallo

Danke werde DLL's benutzen.
Dort muss ich nur Resourcestrings rein machen?
und wie rufe ich diese ab. Ich weis zwar wie ich funktionen einer DLL aufrufe aber nicht resourcestrings.

Bei mir gingen Ini Dateien nicht schnell. Es wahren über 2000 Einträge und das hat schon ne weile gedauert bis das geladen war.


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