Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   FireMonkey Multilanguage Programm (https://www.delphipraxis.net/178759-firemonkey-multilanguage-programm.html)

Luki206 25. Jan 2014 14:13

FireMonkey Multilanguage Programm
 
Hi,
ich habe mal versucht eine mehrsprachige Software zu schreiben. Alles bis auf den Sprachenwechsel klappt (was ein wunder :mrgreen: ).
Ich habe für den nächsten Softwarestart einen Registry erstellt. Hier mein Code: Haupt Formular
Delphi-Quellcode:
implementation
 uses
 Unit2;
{$R *.fmx}

procedure TForm1.Button11Click(Sender: TObject);
begin
Form2.ShowModal;
end;

procedure TForm1.FormCreate(Sender: TObject);
var reg: TRegistry;
begin
   reg := TRegistry.Create;
   try
     reg.RootKey := HKEY_CURRENT_USER;
     reg.OpenKey('Software\Lukas\multilang', true);
     Lang1.Lang := reg.ReadString('lang');
   finally
     reg.Free;
   end;
end;

end.
Neben Formular:
Delphi-Quellcode:
unit Unit2;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
  FMX.Layouts, FMX.ListBox, Registry, WinApi.Windows;

type
  TForm2 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure WriteReg(lang: String);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation
  uses
  Unit1;
{$R *.fmx}

procedure Tform2.WriteReg(lang: string);
var reg: TRegistry;
begin
   reg := TRegistry.Create;
   try
     reg.RootKey := HKEY_CURRENT_USER;
     reg.OpenKey('Software\Lukas\multilang', true);
     reg.WriteString('lang', lang);
   finally

   end;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
WriteReg('en');
ShowMessage('The software must restart. It will hapen automatical when you click OK.');
Application.Terminate;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
WriteReg('de');
ShowMessage('Die Software muss neugestartet werden, dies wird passieren nach dem Sie OK geklickt haben.');
Application.Terminate;
end;

end.
Wo ist mein Fehler?
Danke
Luki :)

Aviator 25. Jan 2014 14:18

AW: FireMonkey Multilanguage Programm
 
Wird der Wert denn überhaupt in die Registry geschrieben? Was genau passiert, wenn du die Registry auslesen willst? Hast du das mal mit dem Debugger durchprobiert?

Deine Fehlerbeschreibung ist nicht sehr ausführlich, von daher können wir uns alles mögliche denken.

Edit:

Du solltest auch noch ein
Delphi-Quellcode:
reg.CloseKey
hintendran hängen.

Luki206 25. Jan 2014 14:30

AW: FireMonkey Multilanguage Programm
 
Tut mir leid wegen den spärlichen angaben.. Ein Registry Eintrag wird erstellt nur übernimmt er bei programmstart nicht die Sprache. Das reg.CloseKey unter reg.Free schreiben?
Ja ich habe es immer nur damit probiert nur wird mir nichts angezeigt.. Welche info's könnten noch hilfreich sein?
Danke
Luki :)

Harry Stahl 25. Jan 2014 14:35

AW: FireMonkey Multilanguage Programm
 
Du musst die Sprach-Codes in Grossbuchstaben (also "EN" und nicht "en") speichern und laden, sonst funktioniert es nicht.

Ich würde hier auch nicht die Registry zur Speicherung des Language-Codes verwenden, wenn Du Dein Programm mal für den MAC compilieren willst, funktioniert das nicht. Die gute alte Ini-Datei tut hier gute Dienste (Programmeinstellungen sollte man sowieso nicht in die Registry schreiben).

Bernhard Geyer 25. Jan 2014 14:37

AW: FireMonkey Multilanguage Programm
 
Zitat:

Zitat von Luki206 (Beitrag 1245307)
Delphi-Quellcode:
procedure Tform2.WriteReg(lang: string);
var reg: TRegistry;
begin
   ....
   finally

   end;
end;

:gruebel:

Luki206 25. Jan 2014 14:38

AW: FireMonkey Multilanguage Programm
 
Vielen Dank, jetzt funtzt es :mrgreen: Ich werde es auch mal mit den .ini Dateien ausprobieren ;)

Luki206 25. Jan 2014 14:49

AW: FireMonkey Multilanguage Programm
 
Ja.. der Fehler ist mir auch eben aufgefallen.. :D

Aviator 25. Jan 2014 16:20

AW: FireMonkey Multilanguage Programm
 
Zitat:

Zitat von Luki206 (Beitrag 1245311)
Das reg.CloseKey unter reg.Free schreiben?

:o
Ne so war das natürlich nicht gemeint. Wenn du das machen würdest käm ne AV dabei raus, aber ich denke das weißt du. Nur sollte man eben einen Registry-Schlüssel den man geöffnet hat auch wieder schließen wenn man ihn nicht mehr braucht. :stupid:


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