![]() |
Zeitumwandlung mit Millisekunden ergibt Millisekunden mit null
Hallo,
Ich benutze Delphi 10.4 Mit dem Mediaplayer-Komponente möchte ich die Millisekunden abrufen. Die Anwendung wird auf einem Android-Tablet mit Version 7.0 installiert. Das Problem ist, wenn ich die Zeitumwandlung zum Beispiel (string) '00:01:23.379' durchführe, wird das Ergebnis '00:01:23' bzw. '00:01:23.000' Meine Frage ist, wie kann ich eine korrekte Zeitkonvertierung durchführen, um auch die Millisekunden '.379' abrufen zu können. Das Ziel dieses Projekt ist, dass der Mediaplayer genau zu einer bestimmter Zeit aufhört zu spielen.
Code:
Vielen Dank für jede Hilfe, die Sie mir geben können.
procedure TFormMain.Button21Click(Sender: TObject);
var dt: TDatetime; iTime: Double; begin // test 01 dt := StrToDateTime(datetostr(date) + ' ' + '00:01:23.379'); Label10.Text := FormatDateTime('hh:nn:ss.zzz', dt); // Ergebnis: Label10.Text-> '00:01:23' ) // test 02 // wenn MediaPlayer1.CurrentTime > '00:01:23.379' Label10.Text := FormatDateTime('hh:nn:ss.zzz', MediaPlayer1.CurrentTime.ToDateTime); // Ergebnis: Label10.Text -> '00:01:23' ) if CompareTime(MediaPlayer1.CurrentTime.ToDateTime, dt) > 0 then // dt ist hier '00:01:23' MediaPlayer1.Stop; // Oder // wie kann man die Zeit '00:01:23.379' umwandeln zu iTime // iTime := ??? if MediaPlayer1.CurrentTime > iTime then MediaPlayer1.Stop; end; |
AW: Zeitumwandlung mit Millisekunden ergibt Millisekunden mit null
Hast du schon geprüft, ob die Millisekunden überhaupt in dem DateTime-Wert richtig angekommen sind?
Z.B. mit System.DateUtils.MilliSecondOf() |
AW: Zeitumwandlung mit Millisekunden ergibt Millisekunden mit null
Habs mal probiert. Das Problem ist schon StrToDateTime. Hier gehen dir schon die Millisekunden verloren.
Keine Ahnung wie das mit dem StrTo... richtig geht. Das hier ist aber Idiotensicher: EncodeDatetime() |
AW: Zeitumwandlung mit Millisekunden ergibt Millisekunden mit null
Code:
Das Ergbnis is 0 in Label10.Text
dt := StrToDateTime(datetostr(date) + ' ' + '00:01:23.379');
mil := System.DateUtils.MilliSecondOf(dt) ; Label10.Text := mil.ToString ; Ich weiß nicht, ob das Problem von Android Version 7 oder von Delphi kommt? |
AW: Zeitumwandlung mit Millisekunden ergibt Millisekunden mit null
Unter Windows kommt da auch .000 raus.
|
AW: Zeitumwandlung mit Millisekunden ergibt Millisekunden mit null
Zitat:
|
AW: Zeitumwandlung mit Millisekunden ergibt Millisekunden mit null
Villen dank für deine hinweise mit EncodeDateTime()
Code:
Super, jetzt bekomme ich die Millisekunden. :-D
dt := EncodeDateTime(2022, 08, 16, 00, 01, 23, 379);
Label10.Text := FormatDateTime('hh:nn:ss.zzz', dt ) ; |
AW: Zeitumwandlung mit Millisekunden ergibt Millisekunden mit null
Zitat:
Muss ich suchen FormatSettings für dt oder im FormatDateTime() ??? |
AW: Zeitumwandlung mit Millisekunden ergibt Millisekunden mit null
Ich bin ihnen sehr dankbar für ihre schnelle Antwort.
Ich habe FormatSettings. in der Form-Erstellung eingelegt.
Code:
Habe eine Zeit lange gesucht, und es scheint jetzt alles so zu funktionieren,
procedure TForm.FormCreate(Sender: TObject);
FormatSettings.DecimalSeparator := '.' ; end; wie ich mir das gewünscht habe. Villen Dank. |
AW: Zeitumwandlung mit Millisekunden ergibt Millisekunden mit null
Zitat:
Ohne Umstellung geht es aber auch so:
Delphi-Quellcode:
StrToDateTime(datetostr(date, TFormatSettings.Invariant) + ' ' + '00:01:23.379', TFormatSettings.Invariant);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:19 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