![]() |
"tickende" uhr mit nur einer zeitmessung
ok, das problem ist folgendes:
soetwas wie hier ist sehr einfach: ![]() es wird einfach die funktion time bzw. gettime benutzt und mittels TimeToStr() in einem label ausgegeben. mein problem ist: ich bekomme nur einen einzigen string in diesem format: "YY/MM/DD,hh:mm:ss" wobei mir der erste teil mit dem datum relativ egal ist. wie lässt sich der text hinter dem komma ausgeben? so, wenn die uhrzeit extrahiert ist, muss ich das ganze in dieses TDateTime konvertieren. wie lässt sich also z.B. "12:00:00" in das TDateTime Format umwandeln? jetz wirds schwer. ich hab nen timer mit interval 1000(=1sek) jetzt muss ich jedesmal eine sekunde dazurechnen. aber wie mach ich das mit diesem komischen format TDateTime? um rechnen zu können muss ich ja erstmal in float konvertieren oder geht das anders? ich weiss, is ein bisserl kompliziert, bin froh, wenn ihr lösungen von teilproblemen habt. |
Re: "tickende" uhr mit nur einer zeitmessung
Hi,
Zitat:
Zitat:
Delphi-Quellcode:
var
s: String; begin s:= 'YY/MM/DD,hh:mm:ss'; caption:= Copy(s, length(s)- 7, 8); Zitat:
Delphi-Quellcode:
var
d: TDateTime; begin d:= StrToTime('12:00:00'); Zitat:
Delphi-Quellcode:
var
d: TDateTime; begin TryEncodeTime(12,0,2,0,d); Caption := TimeToStr(d); |
Re: "tickende" uhr mit nur einer zeitmessung
Um die Stichworte zu vervollständigen:
EncodeTime, EncodeDate DecodeTime, DecodeDate TimeToStr, StrToTime DateToStr, StrToDate Desweiteren sollte man die lokalen Einstellungen brücksichtigen. Mein Datumsformat ist zum Beispiel yyyy-mm-dd. |
Re: "tickende" uhr mit nur einer zeitmessung
... FormatDateTime, IncMilliSecond, IncSecond, IncMinute, IncIrgendwas kann man auch noch nennen.
|
Re: "tickende" uhr mit nur einer zeitmessung
Zitat:
Delphi-Quellcode:
Caption := TimeToStr(now);
Caption := DateToStr(now) + ' ' + FormatDateTime('hh:nn', now); Caption := FormatDateTime('d. mmmm yyyy' + ' ' + 'hh:nn', now); Caption := FormatDateTime('dddd, d. mmmm yyyy', now); Caption := FormatDateTime('dddd, d. mmmm yyyy' + ' ' + 'hh:nn', now); Zitat:
Delphi-Quellcode:
SCRaT
const
UnixStartDate: TDateTime = 25569.0; VAR TimeZone : Integer; // 1 (für Berlin...) [...] function DateTimeToUnix(Datum: TDateTime) : Integer; begin Result := Round((Datum - UnixStartDate) * 86400) - 3600 - (3600*TimeZone); end; function UnixToDateTime(Timestamp: Integer) : TDateTime; begin Result := ((Timestamp+3600+TimeZone*3600) / 86400) + UnixStartDate; end; |
Re: "tickende" uhr mit nur einer zeitmessung
Zitat:
Benutze einen TTimer, den stellst Du auf 1000 ms. Im OnTimer-Ereignis des Timers holst Du Dir die Zeit mit getTime. Diese wandelst Du mit TimeToStr oder FormatDateTime in das gewünschte Format um. Anschliessend zeigst Du die Zeit im Label an. Viel schneller, ohne Rechnen und super simpel. Hilfe zu diesen Funktionen findest Du in der Delphi-Hilfe. Programmieren musst Du das aber noch selber... |
Re: "tickende" uhr mit nur einer zeitmessung
ganz ohne timer und supereinfach:
Delphi-Quellcode:
var startzeit, stopzeit: TTime; begin startzeit := now; // irgendetwas ausführen stopzeit := now; StatusBar1.Panels[1].Text := formatdatetime('hh:nn:ss:zzz', (stopzeit - startzeit)); end; |
Re: "tickende" uhr mit nur einer zeitmessung
Zitat:
|
Re: "tickende" uhr mit nur einer zeitmessung
Zitat:
Ehrlich gesagt, weiß ich auch gar nicht so recht, was der Threadersteller genau möchte. Für eine reine Zeitmessung würde ich die Lösung von Nachteule nehmen. Soll es eher eine "Uhr" werden, wird wohl ein Timer - Beispiele sind ja jetzt genug da :-) - eher in Frage kommen. SCRaT |
Re: "tickende" uhr mit nur einer zeitmessung
Du hättest mich mal erleben sollen, als ich von TDateTime und dessen Hilfsfunktionen noch nichts wußte. Da hab ich auch schlimme Sachen mit Strings angestellt ... :oops:
|
Re: "tickende" uhr mit nur einer zeitmessung
Liste der Anhänge anzeigen (Anzahl: 1)
ok, ihr seit wirklich super! ich hab jetzt den string mit Copy zerschnitten. dann mit StrToTime ins TDateTime format umgewandelt und dann im timer IncSecond angewendet. es funktioniert ohne probleme oder verzögerungen.
hab mein kleines projekt mal angehängt. ich habe zum vergleich auch noch eine "normale" uhr eingefügt, diese liest ständig die systemzeit. die andere kommt mit nur einem mal aus. wie man sieht läuft es absolut synchron, das ist sehr erfreulich :wink: die idee mit dem unix-stamp hatte ich übrigens auch schon, war mir aber zu kompliziert. wieso ich das brauche: ich schicke den ![]() nun lässt sich die handyzeit mit der systemzeit vergleichen und synchronisieren. weil es zu überlastungen führen würde, wird die zeit nur einmal abgefragt und nicht jede sekunde, deshalb der ganze aufwand. |
Re: "tickende" uhr mit nur einer zeitmessung
Wieso zerlegst du den String mit Copy? Und was für ein String?
Delphi-Quellcode:
var
myDT: TDateTime; begin myDT := Now; ShowMessage (FormatDateTime ('dd.mm.yyyy hh:nn:ss', myDT)); myDT := IncSecond (myDT, 10); // um 10 Sek erhöhen myDT := IncMinute (myDT, 10); // um 10 Minuten erhöhen myDT := IncDay (myDT, 10); // um 10 Tage erhöhen {...} ShowMessage (FormatDateTime ('dd.mm.yyyy hh:nn:ss', myDT)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:43 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