AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Timer in einer Schleife!!

Ein Thema von daNiii · begonnen am 18. Feb 2009 · letzter Beitrag vom 24. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2   
daNiii

Registriert seit: 10. Nov 2008
98 Beiträge
 
Turbo Delphi für Win32
 
#1

Timer in einer Schleife!!

  Alt 18. Feb 2009, 13:26
Hallo!

In meinem Programm möchte ich einen Prozess 20 mal durchlaufen lassen. - Deshalb habe ich eine Schleife erstellt (wie unten nachgestellt). Während dem Durchgang sollte das Programm eine kurze Pause einlegen. In dieser Zeit soll der Benützer ein EditFeld ausfüllen können.
Danach soll die Schleife ungestört weiterlaufen und den Timer bei jeden Durchgang aktivieren.


Ich hoffe ihr könnt mir helfen.


Delphi-Quellcode:
procedure TForm1.Start1Click(Sender: TObject);
var
I: integer;
begin
For I := 1 to 20 do begin
    Fragestellung();
    
// -> [b]Hier möchte ich den Timer aktivieren[/b] <-
      
     Edit1.Visible:= false;
    if Edit1.Text = Label1.caption then
    begin
    RoderF.Font.Color:= clgreen;
    RoderF.Caption:= 'Richtig!!!';
    end else begin
     RoderF.Font.Color:= clred;
     RoderF.Caption:= 'Leider falsch!';
    end;
    Label1.Visible:= true;
    
Label1.Visible:= false;
Label2.Visible:= true;


end;

showmessage('Das Spiel ist beendet');
lb_green.Caption:= '';
lb_blue.Caption:= '';

 end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   

end;



DANKE !!

[edit=Sharky]Pre-Tags eingefügt. Mfg, Sharky[/edit]
[edit=mkinzler]Delphi-Tag ist besser, da Fettschrift bei Pre auch nicht funktioniert Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
Frankfurtoder

Registriert seit: 27. Mär 2008
112 Beiträge
 
RAD-Studio 2010 Pro
 
#2

Re: Timer in einer Schleife!!

  Alt 18. Feb 2009, 13:35
Und wie ist dein Problem? Weißt du nicht wie man einen Timer aktiviert?

Timer.Enabled := true; Nicht vergessen den Timer wieder zu deaktivieren...
Erik
Alles gut?
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#3

Re: Timer in einer Schleife!!

  Alt 18. Feb 2009, 13:37
Dann läuft die procedure aber trotzdem weiter und Eingabe kann immernoch keine erfolgen
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#4

Re: Timer in einer Schleife!!

  Alt 18. Feb 2009, 13:37
Schau dir mal die Enabled Eigenschaft vom TTimer an !

MfG
  Mit Zitat antworten Zitat
Frankfurtoder

Registriert seit: 27. Mär 2008
112 Beiträge
 
RAD-Studio 2010 Pro
 
#5

Re: Timer in einer Schleife!!

  Alt 18. Feb 2009, 13:41
Zitat von Meflin:
Dann läuft die procedure aber trotzdem weiter und Eingabe kann immernoch keine erfolgen
Wie wäre es mit einem Inputdialog. Da bleibt zumindest die Prozedur stehen.
Erik
Alles gut?
  Mit Zitat antworten Zitat
18. Feb 2009, 13:44
Dieses Thema wurde von "Sharky" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Ist je eine Delphi-Frage
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#7

Re: Timer in einer Schleife!!

  Alt 18. Feb 2009, 14:44
SERVUS,


Delphi-Quellcode:
//globale var:
var
  Counter : Integer; // wenn ein neues spiel gestartet wird, bitte Counter auf 1 initialisieren, das schreib ich hier net in den code *trivial*
procedure TForm1.Start1Click(Sender: TObject);


var
I: integer;
begin
    timer1.interval := 10000; // zeit für den nutzer, das editfeld zu bearbeiten (in ms)
    Fragestellung();
    timer1.enabled := true; // timer1 sollte bis zum spielstart nicht enabled sein! erst hier wird er gestartet!
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
    inc (counter) // den counter um 1 erhöhen

    // hier ist dein code aus der anderen procedure
     Edit1.Visible:= false;
    if Edit1.Text = Label1.caption then
    begin
    RoderF.Font.Color:= clgreen;
    RoderF.Caption:= 'Richtig!!!';
    end else begin
     RoderF.Font.Color:= clred;
     RoderF.Caption:= 'Leider falsch!';
    end;
    Label1.Visible:= true;
   
    Label1.Visible:= false;
    Label2.Visible:= true;
    if counter < 20 then // wurden weniger als 20 fragen gestellt, weitermachen!
      Fragestellung ()
    else //wurden schon 20 gestellt, dann das spiel beenden (auch wieder ein stück deines codes aus der procedure weiter oben)
    begin
showmessage('Das Spiel ist beendet');
lb_green.Caption:= '';
lb_blue.Caption:= '';
timer1.enabled := false; // timer stoppen, da spiel beendet
    end;
       

end;
das wäre jetzt mal mein lösungsansatz, für fehler entschuldige ich mich ma, ich hab das grade zusammengeschustert sogut es ging (ich weiß der code ist bescheiden formattiert, aber wie mans bekommt gibt mans auch wieder ab )

Hoffe das hilft dir, viel spaß!
  Mit Zitat antworten Zitat
daNiii

Registriert seit: 10. Nov 2008
98 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Timer in einer Schleife!!

  Alt 18. Feb 2009, 19:20
Vielen Dank im Voraus!
Ich werde es gleich mal ausprobieren!
LG Daniela
  Mit Zitat antworten Zitat
daNiii

Registriert seit: 10. Nov 2008
98 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Timer in einer Schleife!!

  Alt 20. Feb 2009, 15:38
Hi!
Danke für eure Hilfe. Leider konnte mir aber keiner bei meinem Problem helfen.
Meinen aktuellen Programmiercode habe ich unten angeführt.
Info: bei meinem Programm handelt es sich um einen Vokabeltrainer.
Problem: Der Timer funktioniert nicht (das Programm läuft durch ohne zu halten)
Kann mir bitte jemand helfen.
Oder mir erklären wie ein Timer genau funktioniert!
Was genau bewirkt der Befehl: Timer.enabled:= true;?
Vielen DAnk im Voraus.



Delphi-Quellcode:
procedure TForm1.Fragestellung();
begin

Fragencounter:= Fragencounter +1;
lb_Fragenzahl.Caption:= inttostr(Fragencounter) + ':' + inttostr(Fragenanzahl);
lb_blue.Visible:= true;
      VZufallszahl := trunc(random(Vokabelcounter) + 1);
        randomize;

 adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.Add('Select * from Englisch where '+inttostr(VZufallszahl)+'= VID');
adoquery1.Open;
while not adoquery1.eof do begin
 Deutsch:= adoquery1.FieldValues['Deutsch'];
 Fremdsprache:= adoquery1.FieldValues['Fremdsprache'];

  adoquery1.next;
  end;
  adoquery1.close;

       timer1.interval:= 1000;
    timer1.Enabled:= true;


  starten();

end;


  procedure TForm1.starten();
  begin
   if Fragencounter < 20 then begin
   Fragestellung();
  end else begin
  timer1.Enabled:= false;
      showmessage('Das Spiel ist beendet');
lb_green.Caption:= '';
lb_blue.Caption:= '';
  end;
  end;


procedure TForm1.Start1Click(Sender: TObject);
begin
        Fragencounter:= 0;

         Fragestellung();

end;


procedure TForm1.FormShow(Sender: TObject);
begin

  Fragenanzahl:= 20;
  Zeit:= 10000 ;

end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
                // Warten auf die Lösung
    Ed_Loesung.Visible:= false;
    //Richtig oder Falsch
    if Ed_Loesung.Text = lb_green.caption then
    begin
    RoderF.Font.Color:= clgreen;
    RoderF.Caption:= 'Richtig!!!';
    end else begin
     RoderF.Font.Color:= clred;
     RoderF.Caption:= 'Leider falsch!';
    end;
    lb_green.Visible:= true;

  if mED.checked=true then begin
     lb_blue.Caption:= Fremdsprache;
     lb_green.Caption:= Deutsch;
     end else begin
     lb_blue.Caption:= Deutsch;
     lb_green.Caption:= Fremdsprache;
     end;

      sleep(300);
  //Warten bis zur nächsten Übung
 lb_green.Visible:= false;
 Ed_Loesung.Visible:= true;
end;
  Mit Zitat antworten Zitat
ATSV

Registriert seit: 8. Aug 2008
95 Beiträge
 
Delphi 7 Professional
 
#10

Re: Timer in einer Schleife!!

  Alt 20. Feb 2009, 15:42
Zitat von daNiii:
Was genau bewirkt der Befehl: Timer.enabled:= true;?
Der Befehl bewirkt das der Timer eingeschaltet wird.
Timer.Enabled := False schaltet ihn wieder ab.

d.h. nur solange der Timer Enabled = True ist wird er überhaupt verwendet
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:08 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