AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FireMonkey Multilanguage Programm

Ein Thema von Luki206 · begonnen am 25. Jan 2014 · letzter Beitrag vom 25. Jan 2014
Antwort Antwort
Luki206
(Gast)

n/a Beiträge
 
#1

FireMonkey Multilanguage Programm

  Alt 25. Jan 2014, 14:13
Hi,
ich habe mal versucht eine mehrsprachige Software zu schreiben. Alles bis auf den Sprachenwechsel klappt (was ein wunder ).
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
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: FireMonkey Multilanguage Programm

  Alt 25. Jan 2014, 14:18
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 reg.CloseKey hintendran hängen.
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#3

AW: FireMonkey Multilanguage Programm

  Alt 25. Jan 2014, 14:30
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
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: FireMonkey Multilanguage Programm

  Alt 25. Jan 2014, 14:35
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).
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: FireMonkey Multilanguage Programm

  Alt 25. Jan 2014, 14:37
Delphi-Quellcode:
procedure Tform2.WriteReg(lang: string);
var reg: TRegistry;
begin
   ....
   finally

   end;
end;
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#6

AW: FireMonkey Multilanguage Programm

  Alt 25. Jan 2014, 14:38
Vielen Dank, jetzt funtzt es Ich werde es auch mal mit den .ini Dateien ausprobieren
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#7

AW: FireMonkey Multilanguage Programm

  Alt 25. Jan 2014, 14:49
Ja.. der Fehler ist mir auch eben aufgefallen..
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: FireMonkey Multilanguage Programm

  Alt 25. Jan 2014, 16:20
Das reg.CloseKey unter reg.Free schreiben?

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.
  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 22: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