Autor |
Beitrag |
Mr. Hunt
      
Beiträge: 25
|
Verfasst: So 02.12.07 15:10
ich will ein Edit1 Feld indem steht: 00:00:00
wenn man auf Button1 klickt,
wird TTimer auf Enabled:=True gestelt und fängt an zu zählen.
bei 00:00:59 springt er um auf 00:01:00
auf Button2 wird der TTmer wieder auf Enabled:=False gestellt
wie geht das
Zuletzt bearbeitet von Mr. Hunt am So 02.12.07 15:51, insgesamt 1-mal bearbeitet
|
|
Mr. Hunt 
      
Beiträge: 25
|
Verfasst: So 02.12.07 15:30
kann man das in irgentweiner art und weise mit einem ähnichem befehl wierd mit diesem hier machen?
Delphi-Quelltext 1:
| TTimer.Timer: E_Sek.Text:=FloatToStr(StrToFloat(E_Sek.Text) +1); |
|
|
PeterPain
      
Beiträge: 83
|
Verfasst: So 02.12.07 15:59
Hi
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| const SecsPerDay = 3600 * 24; var Elapsed : Single; Secs : Integer; begin Elapsed := Now - FStartTime; Secs := Round(Frac(Elapsed) * SecsPerDay);
S := Format('Running since %dd %dh %dm %ds', [Trunc(Elapsed), Secs div 3600, Secs mod 3600 div 60, Secs mod 60]) |
Hab ich gerade ausm Kopf hier reingetippt, ergo ist es nicht geprüft, sollte aber gehen
gruss
|
|
Mr. Hunt 
      
Beiträge: 25
|
Verfasst: So 02.12.07 16:05
Undefinierter Bezeichner: 'FStartTime' und 'S'
|
|
PeterPain
      
Beiträge: 83
|
Verfasst: So 02.12.07 16:08
Mr. Hunt hat folgendes geschrieben: | Undefinierter Bezeichner: 'FStartTime' und 'S' |
FStartTime musst du natürlich deklarieren. S ist ein String, den ich nur drin hab um zu veranschaulichen was man herausbekommt, du kannst auch einfach MeinEdit.Text anstelle von S schreiben.
gruss
|
|
Mr. Hunt 
      
Beiträge: 25
|
Verfasst: So 02.12.07 16:12
wie kann ich das deklarieren?
ich habs versucht, aber es kommt String und Integer = Inkompatibel Raus
(Ich bitte um QuellText )
MfG
|
|
PeterPain
      
Beiträge: 83
|
Verfasst: So 02.12.07 16:15
Mr. Hunt hat folgendes geschrieben: | wie kann ich das deklarieren?
ich habs versucht, aber es kommt String und Integer = Inkompatibel Raus
(Ich bitte um QuellText )
MfG |
Und ich bitte um Mitdenken!
FStartTime muss vom Typ TDateTime sein, alternativ auch von einem beliebigen gleitkomma Typ.
Du kannst auch einfach auf FStartTIme klicken und STRG + SHIFT + D drücken, dann sollte Delphi das Feld automatisch deklarieren.
gruss
|
|
Mr. Hunt 
      
Beiträge: 25
|
Verfasst: So 02.12.07 18:10
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: So 02.12.07 18:20
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
Mr. Hunt 
      
Beiträge: 25
|
Verfasst: So 02.12.07 18:39
Kay, es klappt.
Nur noch ein paar schönheitsfehler.
1.die tage brauche ich nicht. wie nimmt man die raus?
2.das sieht so aus: 0:0:0:0
kann man das so ändern das da 00:00:00:00 steht?
und wenn die tage raus sind soll da stehen: 00:00:00
(ich will die uhrzeit später vergleichen, wenn da steht 0:0:0:0 geht das nicht)
|
|
PeterPain
      
Beiträge: 83
|
Verfasst: So 02.12.07 22:14
Mr. Hunt hat folgendes geschrieben: | Kay, es klappt.
Nur noch ein paar schönheitsfehler.
1.die tage brauche ich nicht. wie nimmt man die raus?
2.das sieht so aus: 0:0:0:0
kann man das so ändern das da 00:00:00:00 steht?
und wenn die tage raus sind soll da stehen: 00:00:00
(ich will die uhrzeit später vergleichen, wenn da steht 0:0:0:0 geht das nicht) |
Nimm dir doch bitte die Zeit, den von mir geschrieben Beitrag nicht nur zu kopieren, sondern auch zu verstehen, besonderes Augenmerk solltest du dabei auf die Funktion Format legen.
|
|
Mr. Hunt 
      
Beiträge: 25
|
Verfasst: Mo 03.12.07 20:40
PeterPain hat folgendes geschrieben: | Mr. Hunt hat folgendes geschrieben: | Kay, es klappt.
Nur noch ein paar schönheitsfehler.
1.die tage brauche ich nicht. wie nimmt man die raus?
2.das sieht so aus: 0:0:0:0
kann man das so ändern das da 00:00:00:00 steht?
und wenn die tage raus sind soll da stehen: 00:00:00
(ich will die uhrzeit später vergleichen, wenn da steht 0:0:0:0 geht das nicht) |
Nimm dir doch bitte die Zeit, den von mir geschrieben Beitrag nicht nur zu kopieren, sondern auch zu verstehen, besonderes Augenmerk solltest du dabei auf die Funktion Format legen. |
blöd bin ich auch nicht, ich habs so geändert das es für mich passt, aber der tag störte, also hab ich das erste von den vieren (bei Format) weggelassen, was macht delphi? den tag lässt delphi drinn und die sekunden schmeist delphi raus. nach weiterem probieren, Fehlermeldungen, löschen der sekunden usw habe ich es nicht geschaft den tag rauszubringen. werfe mir also bitte nicht vor, das ich das einfach nur kopiere.
Mr. Hunt hat folgendes geschrieben: | blöd bin ich auch nicht, ich habs so geändert das es für mich passt |
was denkst du von mir??
MG
|
|
PeterPain
      
Beiträge: 83
|
Verfasst: Mo 03.12.07 21:39
Na, dass du blöd bist wollte ich dir nicht unterstellen, wenn du dir allerdings in der Hilfe mal die Format funktion angeguckt hättest, wüsstest du, wo das Problem ist.
Das ganze funktioniert so: Du übergibst als ersten parameter einen String, der Platzhalter enthält, der zweite enthält die Daten die anstelle der Platzhalter eingefügt werden sollen.
In meinem Beispiel sah das so aus:
Delphi-Quelltext 1:
| Format('Running since %dd %dh %dm %ds', [Trunc(Elapsed), Secs div 3600, Secs mod 3600 div 60, Secs mod 60]) |
Es sind 4 platzhalter enthalten (%d...%d...%d...%d), wie die funktionieren erklärt dir die Hilfe. Im zweiten parameter übergebe ich 4 Werte, die anstelle der platzhalter eingefügt werden, der Rest sollte nun eigentlich Selberklärend sein.
gruss
|
|
jackle32
      
Beiträge: 183
Erhaltene Danke: 7
Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
|
Verfasst: Mo 03.12.07 22:57
Hi,
ich hätte noch einen anderen Vorschlag. Da die Genauigkeit des Timers von der Prozessorauslastung abhängt sind die so gemessenen Zeit immer sehr ungenau.
Daher würde ich mich auf die Systemzeit beziehen. Is außerdem auch einfacher!!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| Start, Jetzt : TDateTime;
[...] procedure TForm1.Button1Click(Sender: TObject); begin Start := now; self.Timer1.Enabled := True; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Jetzt := now; self.Edit1.Text := TimeToStr(Jetzt-Start); end;
procedure TForm1.Button2Click(Sender: TObject); begin self.Timer1.Enabled := false; end; |
Zur Erklärung:
Beim Klick auf Button1 wird die aktuelle Systemzeit in Start gespeichert und der Timer gestartet. Der Timer hat eine Intervalzeit von 100 ms (kann auch größer gemachte werden, würde aber nicht größer 500 ms machen). Wenn jetzt das Timerevent kommt wird wieder die aktuelle Systemzeit ausgelesen. Die zwei Werte werden dann voneinander abgezogen und in ein Edit geschrieben. Die Funktion TimeToStr gibt automatisch das Format 00:00:00 aus.
Beim Klick auf Button2 wird der Timer einfach wieder angehalten.
Find ich wesendliche einfacher und es ist von der Zeitmessung sehr viel genauer.
Gruß Jack
_________________ Es gibt keine dummen Fragen, nur dumme Antworten.
|
|