Autor |
Beitrag |
MasTer YodA
Hält's aus hier
Beiträge: 11
Win 2000
D7 Pers
|
Verfasst: Fr 29.04.05 22:33
Also, ich habe in meinem Programm ein "ProgressBar" auf das man klicken muss, damit es sich füllt. So weit funktioniert es, allerdings will ich auch, dass die Zeit gezählt wird und am ende angezeit wird. Hier ist das Problem, ich weis nicht, wie ich das bewerkstelligen soll.
Ich habe schon probiert das irgentwie mit "b = b+1" hinzubekommen (b hab ich als integer eingegeben) und auch die Timerfunktion ausprobiert.
Sonst habe ich keine Ahnung, was ich machen soll, ich habe schon die Boardsuche verwndet, aber nichts gefunden, auch nicht in der Delphi hilfe. Naja... ich kenne mich auch kaum mit Delphi aus.
Danke im vorraus! 
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 29.04.05 22:51
suchst du sowas ?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure button1click(...); var zeit: int64; begin zeit:=gettickcount; .... .... showmessage(inttostr(zeit-gettickcount) + ' ms benötigt'); end; |
die methode ist allerdings nicht besonders genau
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
MasTer YodA 
Hält's aus hier
Beiträge: 11
Win 2000
D7 Pers
|
Verfasst: Sa 30.04.05 08:39
jepp, allerdings ist es mir zu ungeneu... Also ich hatte 6 Sek. gezählt und der hat angezeigt: 994680 ms... geht das noch irgentwie genauer (ich rechne in Sekunden um, dann braucht es auch nur so inetwa sein) ?
|
|
Fabian W.
      
Beiträge: 1766
Win 7
D7 PE
|
Verfasst: Sa 30.04.05 09:28
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.Timer1Timer(Sender: TObject); begin Zes := Zes +1; if zes >= 10 then begin zes := 0; hus := hus +1; end; if hus >= 10 then begin hus := 0; sec := sec +1; end; if sec >= 60 then begin sec := 0; min := min +1; end; Label1.Caption := inttostr(min)+':'+inttostr(sec)+','+inttostr(hus)+inttostr(zes)+' min'; end; |
Alle Variablen sind integer
EDIT: Timer.Interval = 10
|
|
Holgerwa
      
Beiträge: 325
WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
|
Verfasst: Sa 30.04.05 09:57
Hallo,
retnyg hat folgendes geschrieben: |
Delphi-Quelltext 1:
| showmessage(inttostr(zeit-gettickcount) + ' ms benötigt'); |
die methode ist allerdings nicht besonders genau |
@retnyg: Da sollte
Delphi-Quelltext 1:
| showmessage(inttostr(gettickcount-zeit) + ' ms benötigt'); |
stehen, den gettickcounts wird ja größer, im Lauf der Zeit.
Auf die ms genau zu messen sollte doch ausreichend genau sein.
Warum denkst Du, daß diese Methode ungenau ist?
Holger
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Sa 30.04.05 11:47
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
MasTer YodA 
Hält's aus hier
Beiträge: 11
Win 2000
D7 Pers
|
Verfasst: Sa 30.04.05 13:00
Wie schon gesagt, ich habe 6 Sekunden gezähl, und der halt angezeigt: "994680 ms", also war es so, allerdings mit der adnderen Methode (gettickcount-zeit) funktioniert es, ich benutze aber Fabians' Vorschlag, da kann man gleich sehen, wieviel zeit man verbraucht hat
Danke an alle 
|
|
Holgerwa
      
Beiträge: 325
WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
|
Verfasst: Sa 30.04.05 13:12
MasTer YodA hat folgendes geschrieben: | ich benutze aber Fabians' Vorschlag, da kann man gleich sehen, wieviel zeit man verbraucht hat  |
Die Methode mit GetTickCount beeinflußt aber Deine Messung nicht, holt nur einmal einen Wert vorher, und die zu messenden Vorgänge werden nicht unterbrochen.
Die Timervariante unterbricht den Ablauf alle 10ms, um den Timerevent auszuführen.
Deshalb sollte das Ergebnis bei GetTickCount genauer sein.
Und die Umwandlung des ms-Wertes in einen besser lesbaren Wert sollte kein Problem sein.
Holger
|
|
MasTer YodA 
Hält's aus hier
Beiträge: 11
Win 2000
D7 Pers
|
Verfasst: Mo 02.05.05 14:00
Nach der Verbesserung von retnyg klappt das auch, und die Timerfunktion unterbricht nicht das ganze Programm, und bei dieser Möglichkeit kann es auch gleicht (also mitlaufend, gleich am anfang) in Minuten, Sekunden und millisekunden angezeit werden.
|
|
|