Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Software verhält sich auf Betriebssystemen unterschiedlich (https://www.delphipraxis.net/195540-software-verhaelt-sich-auf-betriebssystemen-unterschiedlich.html)

TiGü 9. Mär 2018 15:21

AW: Software verhält sich auf Betriebssystemen unterschiedlich
 
Zitat:

Zitat von günni0 (Beitrag 1395663)
Ich komme der Problemstelle näher.
Könnte es sein, dass eine der beiden folgenden Zeilen bei manchen Windows 10-Installationen Probleme verursacht?

Delphi-Quellcode:
DateTimePicker1.Time := StrToTime('12:00:00');
DateTimePicker2.DateTime := Now + 1;
Schon vor diesem Fehler beim Programmstart rufe ich eine Prozedur auf die das hier ausführt
Delphi-Quellcode:
 FormatSettings.TimeSeparator := System.SysUtils.TimeSeparator;
 FormatSettings.DateSeparator := System.SysUtils.DateSeparator;

Lass mich raten: Das eine Windows 10, wo es funktioniert, hat deutsche Spracheinstellungen und das andere Windows 10, bei dem es nicht funktioniert, hat eine andere Sprache, bspw. Englisch?

Delphi.Narium 9. Mär 2018 15:21

AW: Software verhält sich auf Betriebssystemen unterschiedlich
 
Und was steht im System.SysUtils.TimeSeparator?
Der : oder eine andere Systemeinstellung?

Die Windowskonfiguration bezüglich der Datums- und Zeiteinstellungen eventuell mal überprüfen?

günni0 9. Mär 2018 15:30

AW: Software verhält sich auf Betriebssystemen unterschiedlich
 
Zitat:

Lass mich raten: Das eine Windows 10, wo es funktioniert, hat deutsche Spracheinstellungen und das andere Windows 10, bei dem es nicht funktioniert, hat eine andere Sprache, bspw. Englisch?
Richtig. Der Problem-PC steht irgendwo auf der Welt wo ich keinen Zugriff habe. Wenn ich mich nicht irre irgendwo in Indien.

Ich nutze Delphi für Windows Version 10.2 (kostenlos).

TiGü 9. Mär 2018 15:36

AW: Software verhält sich auf Betriebssystemen unterschiedlich
 
Zitat:

Zitat von günni0 (Beitrag 1395673)
Zitat:

Lass mich raten: Das eine Windows 10, wo es funktioniert, hat deutsche Spracheinstellungen und das andere Windows 10, bei dem es nicht funktioniert, hat eine andere Sprache, bspw. Englisch?
Richtig. Der Problem-PC steht irgendwo auf der Welt wo ich keinen Zugriff habe. Wenn ich mich nicht irre irgendwo in Indien.

Ich nutze Delphi für Windows Version 10.2 (kostenlos).

Denk mal drüber nach, was passiert, wenn du einen String mit deutschen Zeitformat versuchst in eine Zeit auf einen (wahrscheinlich) englischen Betriebssystem umzuwandeln.

Delphi.Narium 9. Mär 2018 15:38

AW: Software verhält sich auf Betriebssystemen unterschiedlich
 
Das ist jetzt geraten und nur so als Idee gedacht:
Delphi-Quellcode:
var
  sUhrZeit : String;
begin
  sUhrZeit := Format('%.2d%s%.2d%s%.2d',[12, System.SysUtils.TimeSeparator, 0, System.SysUtils.TimeSeparator, 0]);
  DateTimePicker1.Time := StrToTime(sUhrzeit);
  DateTimePicker2.DateTime := Now + 1;
end;

günni0 9. Mär 2018 15:39

AW: Software verhält sich auf Betriebssystemen unterschiedlich
 
Ich dachte StrToTime berücksichtigt das alles.

Mein Workaround sieht so aus

Delphi-Quellcode:

function CustomFormatSettings(TimeSeparator: Char = ':'; DateSeparator: Char = '/'): TFormatSettings;
begin
 Result := TFormatSettings.Create(GetUserDefaultLCID);
 Result.TimeSeparator := TimeSeparator;
 Result.DateSeparator := DateSeparator;
 Result.ShortDateFormat := 'dd' + DateSeparator + 'mm' + DateSeparator + 'yyyy';
 Result.LongDateFormat := 'dddd, dd. mm yyyy';
end;

DateTimePicker1.Time := StrToTime('12:00:00', CustomFormatSettings);

hoika 9. Mär 2018 15:49

AW: Software verhält sich auf Betriebssystemen unterschiedlich
 
Hallo,
endlich mal eine Problembeschreibung von Dir ;)

Bei manchen Windows-Installationen ist das Datumsformat vermurkst.
Ich weiß, wir sind hier bei der Uhrzeit.

Unter Windows gibt es 2 Einstellungsstellen für die Region.
Die eine Stelle siehst unter Systemsteuerung/ Region, Delphi benutzt die andere ...

Lösung1:
Unter Region auf "Weitere Einstellungen" und dort unten auf "Zurücksetzen".

Lösung2:
DateTimePicker1.Time := EncodeTime(12,0,0,0);
Also weg von den StrToX-Funktionen.

Wir haben uns wie auch Du eine eigene Methode gebaut.

günni0 9. Mär 2018 16:02

AW: Software verhält sich auf Betriebssystemen unterschiedlich
 
Was ist denn zu bevorzugen.

EncodeTime oder StrToTime mit FormatSettings als Parameter?

Delphi.Narium 9. Mär 2018 16:03

AW: Software verhält sich auf Betriebssystemen unterschiedlich
 
EncodeTime

günni0 9. Mär 2018 16:06

AW: Software verhält sich auf Betriebssystemen unterschiedlich
 
Letzte Frage. Wie gehe ich denn am besten an einer Stelle vor, wo ich StrToTime verwenden muss, weil der Parameter ein String ist und ich dessen Format nicht immer zu 100% sicherstellen kann?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:48 Uhr.
Seite 2 von 3     12 3      

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