Autor Beitrag
Mr. Hunt
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: So 02.12.07 15:30 
kann man das in irgentweiner art und weise mit einem ähnichem befehl wierd mit diesem hier machen?

ausblenden Delphi-Quelltext
1:
TTimer.Timer: E_Sek.Text:=FloatToStr(StrToFloat(E_Sek.Text) +1);					
PeterPain
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 83



BeitragVerfasst: So 02.12.07 15:59 
Hi

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
const
  SecsPerDay = 3600 * 24;
var
  Elapsed : Single;
  Secs : Integer;
begin
  //FStartTime musst du bei programmstart (oder wenns anfangen soll hochzuzählen) auf Now setzen
  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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: So 02.12.07 16:05 
Undefinierter Bezeichner: 'FStartTime' und 'S'
PeterPain
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 83



BeitragVerfasst: So 02.12.07 16:08 
user profile iconMr. 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 83



BeitragVerfasst: So 02.12.07 16:15 
user profile iconMr. 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! :D

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: So 02.12.07 18:10 
ja, aber eigentlich wollte ich sowas:
user profile iconMr. Hunt hat folgendes geschrieben:
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

und nicht sowas:
ausblenden Delphi-Quelltext
1:
'Running since %dd %dh %dm %ds'					


bzw sowas:
ausblenden Delphi-Quelltext
1:
Running since 3941817150s					
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: So 02.12.07 18:20 
Warum nicht ein wenig mit dem was Dir PeterPain vorgegeben hat herum experimentieren, selber suchen macht klug!
ausblenden Delphi-Quelltext
1:
2:
var
FStart: TDateTime;

und in ButtonClick:
ausblenden Delphi-Quelltext
1:
 FStartTime := Now;					

_________________
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 83



BeitragVerfasst: So 02.12.07 22:14 
user profile iconMr. 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Mo 03.12.07 20:40 
user profile iconPeterPain hat folgendes geschrieben:
user profile iconMr. 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.

user profile iconMr. 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 83



BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 7

Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
BeitragVerfasst: 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!!

ausblenden 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.