![]() |
[Zeit] 30min aufzählen
Hallo DP'ler...
Also, ich arbeite zur Zeit an einem kleinem Projekt. Nichts großes bzw besonderes. Dort geb ich auf einem Label die Zeit aus.
Delphi-Quellcode:
Soweit so gut. Dann kann ich in einem Editfeld eine frei wählbare Uhrzeit ausgeben ('22:22:22' als BSP). Sobald ich die gewünschte funktion aktviere, wird ein Timer Enabled, der dauerhaft die Uhrzeit des Labels mit der Uhrzeit im Edit vergleich.
procedure TForm1.Timer1Timer(Sender: TObject);
begin lblUhrzeit.Caption := TimeToStr(time); end;
Delphi-Quellcode:
Stimmt nun die Zieluhrzeit (Edit) mit der aktuellen Uhrzeit (Label) überein, ist der Code aktiv. Das funktioniert soweit auch alles.
IF lblUhrzeit.Caption = edtUhrzeit.text THEN BEGIN
// [..] END; Allerdings möchte ich nun, wenn die Zeit abgelaufen ist, eine neue Zielzeit berechnen. Sprich die wir haben es 22:22:22 und der Code ist einmal durchlaufen. Bisher war es so, das einfach die CheckBox nicht mehr abgehackt ist. Ich möchte aber, das die Zieluhrzeit aus dem Editfeld von 22:22:22 auf 22:52:22 gesetzt wird. Sprich +30 Minuten. Welches ist hier die am besten geeigntste Lösung? gruß |
Re: Zeitproblem
Am besten die Uhrzeit aus dem Edit in ein TDateTime umwandeln, mit der Funktion IncMinute aus der Unit DateUtils 30 Minuten dazuzählen und dann wieder ausgeben.
|
Re: Zeitproblem
ich würde es so machen:
Delphi-Quellcode:
function GetNewTime(Zeit : TTime; IncMinuten : integer):TTime; var Hour, Minute, Sek, mSek : word; begin DecodeTime(Zeit,Hour,Minute,Sek,mSek); Minuten := IncMinuten + Minuten; result := EncodeTime(Hour,Minuten,Sekunden,mSek); end; Ich bin mir aber gerade net sicher, die EncodeFunktion Minuten > 59 auch richtig umwandelt und dann dementsprechend die H hochsetzt. Einfach mal ausprobieren! |
Re: Zeitproblem
Wie wäre es mit einem simplen:
Delphi-Quellcode:
NeueZeit := AlteZeit + Minuten/1440;
|
Re: Zeitproblem
Ich habs mal so gemacht:
Delphi-Quellcode:
IF chkbAutoTime.Checked THEN BEGIN
zeit := StrToTime(edtZeit.Text); zeit := IncMinute(zeit, 31); edtZeit.Text := TimeToStr(zeit); END ELSE BEGIN MrVariable:= 3; // ist ne Integervariable die ich zum vergleichen des Status benötigt END; |
Re: Zeitproblem
Könntest du deinem Beitrag bitte einen aussagekräftigeren Titel geben? "Zeit" sagt nicht gerade viel aus. Danke :-)
|
Re: Zeitproblem
Zitat:
Zitat:
hm iwie klappt das nur ab und zu. Manchmal zählt der dann +3 Stunden |
Re: Zeitproblem
Hallo,
versuch's mal so:
Delphi-Quellcode:
1 = 1 Tage im TDateTime
IF chkbAutoTime.Checked THEN BEGIN
edtZeit.Text := TimeToStr(StrToTime(edtZeit.Text) + (1 / 24 / 2)); END ELSE BEGIN MrVariable:= 3; // ist ne Integervariable die ich zum vergleichen des Status benötigt END; 1 / 24 = eine Stunde 1 / 24 / 2 = eine halbe Stunde entspricht 1 / 48 oder 0,020833333333333333333333333333333 |
Re: [Zeit] 30min aufzählen
Ansich klappt das. Aber ich glaub ich habe den Fehler gefunden.
Ich habe mal einen Counter eingebaut. Diesen habe ich nach der Änderung deines Codes auf 0 gesetzt. Dann habe ich das Programm ausgeführt. Wir hatten es 11:10. Die Zeit zu der die Seite aufgerufen werden soll ist die Startzeit. Nachdem die Startzeit erreicht wurde und die Aufgabe erfüllt, soll automatisch die Zielzeit eingetragen werden. Zitat:
Aber ich glaub der Fehler liegt darin, das der Counter sowie die Zeit im "OnDocumentComplete" des TWebBrowsers aufgerufen wird. EDIT: Fehler gefunden und behoben!!! Ich hab mURL auf 2 gesetzt. WENN mURL = 2 DANN soll die Procedure aufgerufen werden. Wenn chkbAutoTime nicht angewählt ist, dann soll mURL auf 3 gesetzt werden. Und da ich das immer angewählt hatte, wurde mURL nicht weiter gesetzt und war somit immer auf 2 und hat den Counter und die Zeit jedes mal aufgezählt, wenn eine Internetseite fertig geladen ist. Und sich ein Werbefenster geöffnet hat, war die Zeit deshalb jedes mal mind Doppelt so weit Sprich Counter auf 2 anstatt auf 1 @nahpets: Vielen Dank! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 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