![]() |
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:
Neben Formular:
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.
Delphi-Quellcode:
Wo ist mein Fehler?
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. Danke Luki :) |
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:
hintendran hängen.
reg.CloseKey
|
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 :) |
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). |
AW: FireMonkey Multilanguage Programm
Zitat:
|
AW: FireMonkey Multilanguage Programm
Vielen Dank, jetzt funtzt es :mrgreen: Ich werde es auch mal mit den .ini Dateien ausprobieren ;)
|
AW: FireMonkey Multilanguage Programm
Ja.. der Fehler ist mir auch eben aufgefallen.. :D
|
AW: FireMonkey Multilanguage Programm
Zitat:
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 08:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz