Einzelnen Beitrag anzeigen

ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Wie rerechnet man beim TTimer den Interval- Wert?

  Alt 20. Dez 2005, 13:32
Anstatt eines Timers könntest du z.B. eine Funktion "sleep" erstellen:

Delphi-Quellcode:
procedure mysleep(milisecounds:integer);
var
  starttime:tdatetime;
begin
  starttime:=now;
  while now<starttime+milisecounds/24/60/60/1000 do //Solange die Zeitspanne nicht abgelaufen ist
  begin
    application.processmessages; //Benutzereingaben etc. abarbeiten
    if application.terminated then //Falls der Benutzer schon auf BEENDEN geklickt hat,
      exit; //dann abbrechen
  end;
end;
mit dieser Funktion wird der Ablauf der Prozedur, in der sie aufgerufen wird, für x milisekunden angehalten.

Der Benutzer kann allerdings dennoch Buttonclicks ausüben und zwischendurch andere Funktionen ausführen. Die Genauigkeit dürfte nicht mehr als 0,05 Sekunden abweichen. Is praktisch wie ein Timer. Du musst dann eine Endlosprozedur schreiben:

Delphi-Quellcode:
var
  stopped:boolean;

procedure tform1.button1click(sender:tobject);
begin
  //Timer abbrechen
  stopped:=true;
end;


procedure endlosprozedur;
begin
  while not stopped do //Solange STOPPED false ist
  begin
     [DAS TUN, WAS EIGENTLICH ONTiMER PASSIERT]
    if application.terminated then //Falls der Benutzer die Anwendung schon beendet hat,
      exit; //dann abbrechen
    mysleep(intervall);
  end;
end;

procedure tform1.form1create(sender:tobject);
begin
  stopped:=false;
  ENDLOSPROZEDUR; //Ablauf starten
end;
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat