AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Countdown und Delay

Ein Thema von Smartin · begonnen am 29. Sep 2005 · letzter Beitrag vom 29. Sep 2005
Antwort Antwort
Smartin

Registriert seit: 2. Jun 2005
Ort: Duisburg
3 Beiträge
 
#1

Countdown und Delay

  Alt 29. Sep 2005, 10:10
Hallo,

ich lese inzwischen schon länger hier mit, und habe mir auch schon einige gute Ideen hier entnehmen können. Leider habe ich für mein aktuelles Projekt bis jetzt noch keine zufriedenstellende Lösung gefunden. Es geht dabei um ein Testprogramm was Zahlen für Testreihen generiert und die Auswirkungen dieser Testreihen nach einer gewissen Zeit protokolliert.

Mein bisheriger Ansatz sieht ungefähr so aus:
Delphi-Quellcode:
procedure test;

begin
        //Testreihen gernerieren
        //Ausgabe
        Wartezeit:=random(60001);
        CountdownOn(Wartezeit);
        //Test auswerten
        Pausenzeit:=random(18001);
        CountdownOn(Pausenzeit);
end;
Die procedur CountdownOn schaltet einen Timer an und zwei Buttons und Edit-Felder aus (Enabled:=false
Der Timer steuert sowohl das die einzelnen Zeit entsprechend sich vergrößern, aber auch, dass die verbleibende Pausenzeit ausgegeben wird. Beim Erreichen der Wartezeit schaltet der Timer sich wieder ab, das ist nicht das Problem. Mein Problem liegt darin, dass der Timer anläuft, aber gleichzeitig weiter die Prozedur test abgearbeitet wird, was ich nicht möchte.
Ich habe schon mit sleep und delay experimentiert, aber diese Lösung waren für mich nicht zufriedenstellend, da die zeitlichen Abweichungen zu groß waren bzw. das Programm gar nicht mehr reagierte.

Könnt ihr mir weiter helfen?

Martin Schmidt.
  Mit Zitat antworten Zitat
Benutzerbild von chrisw
chrisw

Registriert seit: 11. Jan 2005
Ort: Schleswig
193 Beiträge
 
Delphi XE8 Professional
 
#2

Re: Countdown und Delay

  Alt 29. Sep 2005, 10:36
wie wäre es mit einer Bool variable, die abgefragt wird und wenn der Timer läuft true ist, sonst false

Delphi-Quellcode:
procedure test;

begin
  if not TimerRuns then
  begin
        //Testreihen gernerieren
        //Ausgabe
        Wartezeit:=random(60001);
        CountdownOn(Wartezeit);
        //Test auswerten
        Pausenzeit:=random(18001);
        CountdownOn(Pausenzeit);
        TimerRuns := True;
  end;
end;

im Timer (am Ende) TimerRuns wieder auf False
Christian Wahl
me, myself and I, die lustigen Drei !!
  Mit Zitat antworten Zitat
Smartin

Registriert seit: 2. Jun 2005
Ort: Duisburg
3 Beiträge
 
#3

Re: Countdown und Delay

  Alt 29. Sep 2005, 10:50
Die Lösung klingt interessant und würde wahrscheinlich auch funktionieren, wenn die Prozedur test nur einmal aufgerufen wird. Da sie aber in einer Repeat-Until-Schleife liegt kann ich über diese Funktion nicht sicher stellen, dass das Programm da wartet, wo es warten soll, d.h. mit dieser Lösung würden weitere Testreihen generiert werden, nachdem TimerRuns wieder auf false ist.

Martin.
  Mit Zitat antworten Zitat
Smartin

Registriert seit: 2. Jun 2005
Ort: Duisburg
3 Beiträge
 
#4

Re: Countdown und Delay

  Alt 29. Sep 2005, 17:05
Da ich mich jetzt schon so halb in das Wochenende verabschiede (d.h. ich habe keinen Zugriff mehr auf meinen privaten Rechner), möchte ich euch noch kurz etwas mehr Code zu meinem Problem geben. Vielleicht hilft das weiter.
Delphi-Quellcode:
procedure CountdownOn(Zeit:Int64);
//Schaltet den Countdown an

begin
     counter:=Zeit;
     Form_test.Button_Start.Enabled:=false;
     Form_test.Edit_maxDurchl.Enabled:=false;
     Form_test.Timer_CountDown.Enabled:=true;
end; //END CountdownOn


procedure CountdownOff;
//Schlatet den Countdown aus

begin
     Form_test.Timer_CountDown.Enabled:=false;
     Form_test.Button_Start.Enabled:=true;
     Form_test.Edit_maxDurchl.Enabled:=true;
end; //END CountdownOff


procedure test;
// Startet den Test

begin
     //Initalisierung
     repeat
        //Testreihen gernerieren
        //Ausgabe
        Wartezeit:=random(60001);
        CountdownOn(Wartezeit);
        //Test auswerten
        Pausenzeit:=random(18001);
        CountdownOn(Pausenzeit);
     until {Abbruchbedingung};
     //Daten speichern
       
end; //END test


procedure TForm_test.Timer_CountDownTimer(Sender: TObject);
//Timer

begin
     counter:=counter-1000;
     Label_Wartezeit.Caption:='Verbleibende Wartezeit: '+IntToStr(round(counter/1000))+' s';
        If counter<=0 then CountdownOff;
end; //END Timer_CountDownTimer
Martin Schmidt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz