Autor Beitrag
dude
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Sa 15.02.03 15:38 
Hi erstmal alle !

Also ich hab folgendes Problem:

Ich will Zeit stoppen und danach die Zeit addieren. Das will ich machen, weil ich einen Timer bauen will, der genau ist! Daher hatte ich die Idee die SystemZeit zu holen, nach einer 'Timer-Sekunde(Interval:1000)' nochmal die Zeit holen und dann die voherige Zeit von dieser abzuziehen!

Fals dies dort oben umständlich geschrieben ist:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
private
  Zeitholen : Time;
  Zeitnochmalholen : Time;
  Zeitfertig : Time;
public

procedure Button1.click (sender: TObject)
begin
  Zeitholen := time;
end;

procedure Timer1.timer (..)
begin
  Zeitnochmalholen := time;
  Zeitfertig := Zeitnochmalholen - Zeitholen;
  Label1.caption := Zeitfertig;
end;

So sieht das in Code aus, wie ich die Zeit berechnen will. Bloss funktioniert dieser Code nicht.

Wäre mir sehr hilfreich wenn mirjemand helfen könnte !

MFG, dude
GruppeCN
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 322



BeitragVerfasst: So 16.02.03 13:02 
Ich glaube das man es so machen könnte:

ausblenden Quelltext
1:
2:
3:
const plus = '00:00:01';

var zeit, zwischen: TTime;


Form1.Create:

ausblenden Quelltext
1:
2:
3:
begin
zeit := Time;
end;


Dazu zählen:

ausblenden Quelltext
1:
2:
3:
4:
5:
procedure Timer1.timer (..)
begin
zwischen := StrtoTime(plus);
zeit := zeit + zwischen;
end;


Du kannst dieses Beispiel Downloaden:

www.gruppecn.de/down...dukte/time/timer.zip

_________________
Warum sind die Sachen, die du suchst, immer da, wo du zuletzt nachsiehst?
Weil du aufhörst zu suchen, wenn du sie gefunden hast.
Fred Ferkel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 87



BeitragVerfasst: Mo 17.02.03 21:30 
hoi hoi
nicht das ichs ganz checke was die frage ist aber so kannst du recht
präzise herausfinden wieviel zeit vergangen ist...

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  x:single;

..button1click...
begin
  x:=gettickcount;
end;

..button2click...
begin
  caption:=floattostr(gettickcount-x); //in millisekunden...sollte genau genug sein..
end;



aber was willste mit dem timer machen??

cya
oink oink
GruppeCN
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 322



BeitragVerfasst: Di 18.02.03 17:26 
Im grunde bringt das alles nichts, denn du zählst die Zeit um eine Sekunde hoch. Und das durch einen Timer(der dir zu ungenau ist) alle 1000 Millisek.. Also ...

_________________
Warum sind die Sachen, die du suchst, immer da, wo du zuletzt nachsiehst?
Weil du aufhörst zu suchen, wenn du sie gefunden hast.
Fred Ferkel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 87



BeitragVerfasst: Di 18.02.03 23:50 
wie stehts damit? :D
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button1Click(Sender: TObject);
var
  x:single;
  i:integer;
begin
  x:=gettickcount;
  for i:=1 to 10 do
    begin
      while (gettickcount-x)<i*1000 do
        application.ProcessMessages;
      caption:=inttostr(strtoint(caption)+1);
    end;
end;
dude Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Mi 05.03.03 13:29 
wie würdest du es dann machen ?
es soll ja im format hh:mm:ss sein. und es soll jede sekunde
um eins erhöht werden! Und damit man das genau machen kann bietet
sich doch die systemzeit an ! zeit holen, nach ner sekunde zeit holen, zeit voneinander abziehen, ergebnis(00:00:01) mit altem ergebnis addieren!
mars
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 238

Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
BeitragVerfasst: Mi 05.03.03 13:39 
Also wenn es dir nur um eine Sekundenanzeige geht, dann maches einfach mit einem Timer: Bei Button.Click Timer aktivieren (Intervall:=1000) und beim Timer-Ereignis eine globale Variable um eins hochzählen und die Label Anzeige updaten.
Wenn es dir aber um eine genaue Messung einer Zeitdifferenz geht, dann such mal nach QueryPerformanceCounter hier auf dem Forum. Hab mal irgendwo auch ein Codeschnipsel dazu gepostet.
Gruss
Fred Ferkel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 87



BeitragVerfasst: Mi 05.03.03 16:16 
er will doch nen timer machen der besser ist als der standard-timer...von daher..naja egal aber queryperformancecounter wäre tatsächlich noch besser aber wie genau will man es denn nun eigentlich haben??
dude Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Do 06.03.03 20:30 
hmpf, also ich hab das nu gelöst:
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
unit zeitsuchen;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    Label2: TLabel;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    procedure zeitholen;
    procedure zeitholen2;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  bolfunc : Boolean = True;
  a,b,c : TTIme;
implementation

{$R *.dfm}

procedure TForm1.zeitholen;
begin
  a := Time;
  label2.Caption := TimeToStr(a);
end;

procedure TForm1.zeitholen2;
begin
 B := Time;
 C := B - A + StrToTime(label1.Caption)+StrToTime('00:00:01');
 label1.Caption := TimeToStr(c);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Enabled := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if bolfunc then zeitholen
               else zeitholen2;
 bolfunc := not bolfunc;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.Enabled := false;
end;

end.


so bekomm ich die genaue Zeit, und kann somit einen stinkegenauen timer bauen !