Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fragen zum Timer! (https://www.delphipraxis.net/118044-fragen-zum-timer.html)

Eiskalt2 30. Jul 2008 15:55


Fragen zum Timer!
 
is delphi win32 = normales delphi 2005 ô0

Erst ma Hi und Entschuldigung falls ich des falsch gepostet hab^^

also ich programmiere noch nicht lange also bitte EINFACH erklären xD

k das Programm is eigentlich ganz einfach ( mit Delphi^^ )

geht darum n timer mit ner gewissen zeit runterlaufen zu lassen. diese gewisse zeit soll aus nem edit rausgelesen werden.

wir mach ich mir das jetzt am einfachsten?
hab schon n paar sachen ausprobiert bekomms aber nicht hin =P

schon ma danke im vorraus

lg eiskalt

mkinzler 30. Jul 2008 15:56

Re: Fragen zum Timer!
 
Wie hast du es probiert?
Schau dir mal die Eigenschaft Intervall an

helgew 30. Jul 2008 15:58

Re: Fragen zum Timer!
 
Timingsachen machst du am besten mit GetTickCount(), weil Timer über Messages laufen und nicht genau sind. Du hast einen Startwert in einem Editfeld?

Delphi-Quellcode:
uses
  math;

var
  limit: longint;


TForm1.StartButtonClick(Sender: TObject);
begin
  limit := gettickcount + StrToIntDef(Edit1.Text, 1000); // in ms
  Timer1.Interval := 100;
  Timer1.Enabled := true;
end;

TForm1.Timer1Timer(Sender :TObject);
var delta : longint;
begin
  delta:= limit - gettickcount;
  if delta < 500 then timer1.Interval := 20;
  if delta >0 then
    label1.caption := inttostr(floor(delta))+'sec verbleiben'
  else
  begin
    Timer1.Enabled := false;
    // dann hier gewünschten Code einfüllen
  end;
end;

spaxxn 30. Jul 2008 15:58

Re: Fragen zum Timer!
 
Im auf den Wert im Editfeld kannst du mit Editfeldname.Text zugreifen.
Das Timerintervall setzt man mit Timername.Interval.

Also
Delphi-Quellcode:
Timername.Interval := strtoint(Editfeldname.Text)
Timername.Enabled := true startet den Timer.

Dann musst du noch den Timerevent implementieren.
Wenn der Event aufgerufen wird, solltest du den Timer am Anfang stoppen und am Ende wieder starten.

Eiskalt2 30. Jul 2008 16:08

Re: Fragen zum Timer!
 
spaxxn antwort sagt mir mehr

sry gelgew^^

ich probs ma

taaktaak 30. Jul 2008 16:13

Re: Fragen zum Timer!
 
... und bitte sicherstellen, dass im Editfeld auch ein Integer eingegeben wurde! Alternativ z.B. mit TryStrToInt() arbeiten und den Intervall nur setzen, wenn erfolgreich Konvertiert werden konnte :hi:

helgew 30. Jul 2008 16:13

Re: Fragen zum Timer!
 
Hi,

du wolltest doch einen timer herunterzählen lassen. Nun starte ein Programm mit höherer Priorität, welches viele Ressourcen zieht und du wirst sehen, dass der Timer langsamer wird. Abhängig davon, was du brauchst, kann das vollkommen inakzeptabel sein. Mein Codebeispiel, was ich mir gerade für dich aus den Fingern gesaugt hab, koppelt das Zählen vom eigentlichen timer ab und vergleicht mit der Systemuhr. Wenn dein Problem schon darin besteht, den timer zu initialisieren, schaust du dir am besten an, was timer1.enabled macht und wie sich das intvervall auf den timer auswirkt.

greeds

ps. TryStrToInt wird wohl gleichwertig sein mit StrToIntDef(edit1.text, -1 ) und der anschließenden Prüfung auf einen semipositiven Wert.

spaxxn 30. Jul 2008 16:16

Re: Fragen zum Timer!
 
@helgew: Ich glaube, dass es im erstmal nur um das Verständnis geht. Du schiesst ja gleich mit Artillerie auf Spatzen.

taaktaak 30. Jul 2008 16:19

Re: Fragen zum Timer!
 
@helgew: Mein Hinweis bezog sich auf Post#4. Dort wird nur StrToInt() verwendet. Das in deinem Code enthaltene StrToIntDef() habe ich erst durch deinen Hinweis "kennen gelernt" :oops: - vielen Dank! Man lernt nie aus!

Eiskalt2 30. Jul 2008 16:45

Re: Fragen zum Timer!
 
soll ich das intervall im timer an sich erst ma auf " 1 " stellen oder ist das erst ma egal, da er sobald der timer aktiviert wird (per button), n neues intervall bekommt.


edit: fehler meldung kommt nach 0,5 sec oder so nachem ich das programm laufen lass

Im Projekt Project1.exe ist eine Exception der Klasse EConvertError mit der Meldung "ist kein guültiger Integerwert" aufgetreten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:28 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz