PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeit stoppen


dfisch
18.12.2001, 16:58
Ich hab ein hab ein Programm programmiert, das unter anderem die Zeit misst, das ist der Code: (so kanns nicht gedacht sein)

----------------------------------------------------------
za:=time; //Systemzeit

bla bla bla

ze:=time; //Systemzeit
zd:=(ze-za)*86000; //Zeitdifferenz
label1.Caption:=floattostr(zd);
----------------------------------------------------------

In VB war das so:
za=timer //Anfangszeit setzen
bla
ze=timer //Endzeit setzen
zd=ze-za //Zeitdifferenz


Onkelz
20.12.2001, 12:02
Du kannst das ganze z.B. mit GetTickCount lösen und dann die erhaltenen Millisekunden formatieren, was meiner Meinung nach zu umständlich ist, also mach es am besten so:

var
start, ende, zeit: TDateTime;


implementation


{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
start := time;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
ende := time;
zeit := ende-start;
ShowMessage(FormatDateTime(´hh:mm:ss:ms´, zeit));
end;

dfisch
23.12.2001, 02:25
Ok, danke :-)

Jetzt noch was!

Wie kann ich die Uhrzeit in meinem Prog. anzeigen lassen?

Onkelz
23.12.2001, 11:17
Wenn Du die aktuelle Uhrzeit in einem Label darstellen willst, dann machst Du das am einfachsten so:

Label1.Caption := TimeToStr(Now);

Wenn die angegebene Uhrzeit immer wieder aktualisiert werden soll, jede Sekunde, dann musst Du die Zeile in das OnTimer-Event eines TTimers schreiben.

Viel Spaß.

somana

Anfänger
29.12.2001, 16:08
Hallo, ich habe den code ausprobirt. Aber ich verstehe nicht was mir in dem showmessage Fenster angezeigt wird.

Achja und da wollte ich noch wissen wie ich einen Wecker machen kann.

Kann mir vielleicht jemand bei meinen Fragen helfen. Danke schon mal im vorraus.

Onkelz
29.12.2001, 23:51
Original von Anfänger
Hallo, ich habe den code ausprobirt. Aber ich verstehe nicht was mir in dem showmessage Fenster angezeigt wird.

Ganz einfach:

Wenn Du auf den 1. Button klickst wird die Stoppuhr sozusagen gestartet. Wenn Du auf den 2. klickst, dann wird die Stoppuhr angehalten und die gemessene Zeit in Stunden, Minuten, Sekunden und Millisekunden angezeigt, jeweils getrennt mit einem Semikolon (;).

Onkelz
30.12.2001, 14:49
Original von Anfänger Achja und da wollte ich noch wissen wie ich einen Wecker machen kann

Ich meine Du solltest Dir da mal überlegen, was für ein Event ausgelöst werden soll, wenn die gewünschte Zeit erreicht ist.
Ist es ein Soundfile oder soll der PC ausgeschaltet werden?

Musst Du ja wissen, poste, dann gibts ne Lösung, aber im großen und ganzen musst Du nur eine Variable des Typs TDateTime deklarieren und wenn z.B. 12:12:53 (sprich, 12 Uhr 12 und 53 Sekunden) erreicht ist, dann wird das Event ausgelöst. Einfach in einen Timer einbauen.

Auf diese Art:

procedure ...;
var
wecker, zeit: TDateTime;
begin
wecker := 12:00:00;
zeit := Time(Now); // Oder einfach nur Time;
if wecker = zeit then
begin
// event wird ausgelöst
end;
end;

Anfänger
30.12.2001, 17:07
Hallo, der Wecker soll umgefähr so aussehen.
Wenn ich in Edit 20min eintipe oder 20min und 20sec
soll eine Meldung erscheinen das es jetzt so viel Uhr ist und dann soll da noch ein Text stehen was ich in Edit2 eingetippt habe. Und ein Ton würde ich auch gerne haben.

Onkelz
30.12.2001, 19:57
Wenn bei meinem Beispiel ShowMessage(´...´) ausgegeben wird, könntest Du ein beliebiges Event auslösen (Ton, etc...):

var
wecker: Integer;
uhrzeit: Integer;


implementation


{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var
eingabe: Integer;
begin
uhrzeit := GetTickCount;
eingabe := StrToInt(Edit1.Text);
wecker := eingabe*60*1000;
Timer1.Enabled := true;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
if uhrzeit+wecker < GetTickCount then
begin
ShowMessage(Edit2.Text);
Timer1.Enabled := false;
end;
end;

Anfänger
30.12.2001, 20:04
Hi, danke es klapt. So aber ich habe da jetzt ein par Fragen. In Edit1 sind die Minuten und in Edit2 die sec. Aber wie kann ich das mit dem eigenen Wecker ton machen.

Onkelz
30.12.2001, 20:11
Mit dem Code hier müsste es gehen:

procedure TForm1.Button1Click(Sender: TObject);
var
eingabemin: Integer;
eingabesek: Integer;
min, sek: Integer;
begin
uhrzeit := GetTickCount;
eingabemin := StrToInt(Edit1.Text);
eingabesek := StrToInt(Edit2.Text);
sek := eingabesek*1000;
min := eingabemin*60*1000;
wecker := min+sek;
Timer1.Enabled := true;
end;

Allerdings musst Du dann bei der OnTimer-Procedure Edit2 durch eine alternative Edit-Komponente ersetzen, da Edit2 ja zur Sekunden-Angabe dient.

Anfänger
30.12.2001, 20:15
Und wenn er dann die meldung anzeigt, schreibt er mermals das Fenster.

SwF|Nashman
16.10.2003, 10:26
Ich habe das Prog von der ersten Antwort ausprobiert. Es funzt gut aber gibt es eine Möglichkeit das ganz noch genauer zu machen? Millisekunden reichen ja schon aber mit dieser Methode gibt es grosse Schritte --> 120ms, 1s 121ms, 2:122, 3:123, 4:124 ...

zer00
22.10.2003, 17:45
hmmm, kann man jetzt hier schon seine APP ideen beschreiben
und bekommt die dann von jemandem geschrieben ?

denn dann hab ich auch ne idee, ich möchte ein OS schreiben
kann mir jemand den code schreiben? ;)



PS: ist nur ein witz :confused: