Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Fehler bei Zeitberechnung


LuGo - Sa 06.02.10 13:02
Titel: Fehler bei Zeitberechnung
Ich habe folgendes kleine Programm geschrieben:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var Zeit: String; Datetime: TDatetime; Timer: TTimer;

procedure Button1.Click
begin
Timer1.OnTimer(DateTime);
Zeit := TimetoStr(DateTime);
Label1.Caption := Zeit;
end;


Da kam eine Fehlmeldung und ein Fenster mit dem Titel CPU öffnete sich.
Nun meine Frage: Ist irgendwas am PC kaputtgegangen und was habe ich falschgemacht?


Gausi - Sa 06.02.10 13:52

Ja, da wird wohl was am Mainboard durchgebrannt sein, das passiert schonmal, wenn man mit Delphi Mist programmiert. :mrgreen:

Ne, im Ernst: Was soll denn diese Zeile machen?


Delphi-Quelltext
1:
Timer1.OnTimer(DateTime);                    


OnTimer dürfte das OnTimer-Event des Timers sein, aber warum übergibst du dem ein TDateTime?


Metschu - Sa 06.02.10 13:59

Also wenn ich das richtig interpretiere, möchtest Du, das label 1 die Uhrzeit Anzeigt, oder?

Ein Timer dafür nicht geeignet, da dieser alle X-Zeitintervalle (Einstellbar bei Intervall) ein Ereigniss ausführt.

Für Deinen Zweck wäre folgendes Richtig:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure Button1.Click
var Zeit:String
begin
 Zeit:=TimetoStr(now);
 Label1.Caption := zeit
end;


oder Einfacher, wenn du die Variable nicht brauchst:

Delphi-Quelltext
1:
2:
3:
4:
procedure Button1.Click
begin
 Label1.Caption := TimetoStr(now);
end;


Boldar - Sa 06.02.10 15:19

Dann wird die Uhrzeit aber nicht aktualisiert.
Der Timer ist also schon richtig.
Wenn es sich um ein VCL-Projekt handelt, kannst du den Timer einfach auf die Form ziehen, dann doppelklicken und folgendes schreiben:

Delphi-Quelltext
1:
label1.caption := tinetostr(now)                    


Dann noch den Timer auf 250ms stellen.


Metschu - Sa 06.02.10 15:26

user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:
Dann wird die Uhrzeit aber nicht aktualisiert.


Stimmt, aber ich hatte das so interpetriert, das er die Zeit des Button-Clicks auf dem Label haben möchte.

Wenn er immer die Aktuelle Uhrzeit angezeigt haben will, ist der Timer wiederum richtig.