Autor Beitrag
MasTer YodA
Hält's aus hier
Beiträge: 11

Win 2000
D7 Pers
BeitragVerfasst: 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! :D
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Fr 29.04.05 22:51 
suchst du sowas ?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure button1click(...);
var zeit: int64;
begin
  zeit:=gettickcount;
  ....
  //tue etwas mit progressbar
  ....
  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 Threadstarter
Hält's aus hier
Beiträge: 11

Win 2000
D7 Pers
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1766

Win 7
D7 PE
BeitragVerfasst: Sa 30.04.05 09:28 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 325

WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
BeitragVerfasst: Sa 30.04.05 09:57 
Hallo,

user profile iconretnyg hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
  showmessage(inttostr(zeit-gettickcount) + ' ms benötigt');					

die methode ist allerdings nicht besonders genau


@retnyg: Da sollte
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Sa 30.04.05 11:47 
user profile iconHolgerwa hat folgendes geschrieben:
Hallo,

user profile iconretnyg hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
  showmessage(inttostr(zeit-gettickcount) + ' ms benötigt');					

die methode ist allerdings nicht besonders genau


@retnyg: Da sollte
ausblenden 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


du hast recht, es gehört so vorne hin.
es ist relativ genau, aber nicht 100% genau, weil es ein von windows errechneter wert ist.
für diese zwecke sollte es aber reichen

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
MasTer YodA Threadstarter
Hält's aus hier
Beiträge: 11

Win 2000
D7 Pers
BeitragVerfasst: 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 :D
Danke an alle :D
Holgerwa
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 325

WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
BeitragVerfasst: Sa 30.04.05 13:12 
user profile iconMasTer YodA hat folgendes geschrieben:
ich benutze aber Fabians' Vorschlag, da kann man gleich sehen, wieviel zeit man verbraucht hat :D

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 Threadstarter
Hält's aus hier
Beiträge: 11

Win 2000
D7 Pers
BeitragVerfasst: 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.