Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Ländereinstellungen werden nicht übernommen (https://www.delphipraxis.net/189621-laendereinstellungen-werden-nicht-uebernommen.html)

franktron 30. Jun 2016 10:55

Ländereinstellungen werden nicht übernommen
 
Ich habe ein Programm mit XE2 geschrieben (Konsole), diese Programm ist ein Server das mit jeder Verbindung einen neue Thread erstellt.

Jetzt zum Problem, ich nutze beim Start des Main Threads folgenden Code
Delphi-Quellcode:
Settings := TFormatSettings.Create(LANG_GERMAN);

  For i := 0 to High(FormatSettings.LongMonthNames) do
  Begin
    FormatSettings.LongMonthNames[i] := Settings.LongMonthNames[i];
  End;
  For i := 0 to High(FormatSettings.LongDayNames) do
  Begin
    FormatSettings.LongDayNames[i] := Settings.LongDayNames[i];
  End;

  For i := 0 to High(FormatSettings.ShortMonthNames) do
  Begin
    FormatSettings.ShortMonthNames[i] := Settings.ShortMonthNames[i];
  End;
  For i := 0 to High(FormatSettings.ShortDayNames) do
  Begin
    FormatSettings.ShortDayNames[i] := Settings.ShortDayNames[i];
  End;

  FormatSettings.ShortDateFormat := 'dd.mm.yyyy';
  FormatSettings.DateSeparator := '.';
  FormatSettings.TimeSeparator := ':';
  FormatSettings.DecimalSeparator := ',';
Um die Länder Einstellung des Programm auf Deutsch einzustellen.

Das geht aber nicht immer ab und zu ist das Programm dann Englisch und bleibt auch dabei bis es wieder neu gestartet wird.

Muss ich die Einstellungen für jeden Thread einzeln machen oder was ist das Problem.

Pixel 23. Aug 2016 21:50

AW: Ländereinstellungen werden nicht übernommen
 
Es ist wirklich schwer herauszufinden wo dein Problem liegt mit dem was du an Code posted hast.

Allgemein solltest du aber deinen Thread so aufbauen:

(freihand runtergetippt)

Delphi-Quellcode:
TMeinThread = class(TThread)
    private
        m_Language : TLanguage;
    protected
        procedure Execute; override;
    public
        constructor Create(language: TLanguage);
end;

constructor TMeinThread.Create(language: TLanguage);
begin
  inherited Create(false); // Dass der Thread nicht suspended gestartet wird
  FreeOnTerminate := True // Falls der Thread nicht manuell free wird.
  m_Language := language; // Der lokalen private-variable die dem Thread zugewiesene Sprache übermitteln
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  threadObjekte : array[0..4] of TMeinThread;
  i : Integer;
begin
  for i := 0 to 4 do
  begin
    threadObjekt[i] := TMeinThread.Create(LANG_GERMAN);
  end;
end;
So würden 5 Threads mit der Sprache LANG_GERMAN erstellt. Jeder einzelne Thread threadObjekt[i] muss selbstverständlich seperat eine Sprache zugeordnet bekommen.

haentschman 24. Aug 2016 10:01

AW: Ländereinstellungen werden nicht übernommen
 
Moin...:P

Unabhängig von den Threads... Die FormatSettings sind fehlerhaft. Siehe: http://www.delphipraxis.net/188843-f...s-dummies.html
Prinzipiell betrifft u.a. das Time Format. :?


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