[Code] [Delphi] Timerproblem

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Prrovoss, 1. August 2010 .

Schlagworte:
  1. 1. August 2010
    [Delphi] Timerproblem

    hi,
    kann es sein das man den timer innerhalb einer laufenden prozedur nicht starten kann?

    bei mir siehts atm so aus:



    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    .....
    Code
    .....
    restzeit := listbox1.Items.count*30-30;
    timer1.enabled := true;
    .......
    for-for-schleife 
    code
    ......
    "Ende Prozedur"
    
    ......
    
    
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    
     label1.caption := inttostr(restzeit);
     label1.refresh;
     dec(restzeit);
     //form1.refresh;
    
    end;
    mit for-for-schleife meine ich eine schleife in der schleife^^

    hab mir das jetz nochma genau angeguckt und es scheint so als ob das ontimer event nicht stattfindet solange das programm in der unterschleife is. was soll das?^^
    (die "äußere" for-schleife kann ein paar minuten dauern und die "innere" for-schleife geht immer 30 sek.
    nachdem das programm dann wieder in die äußere for-schleife springt, zählt es weiter runter. solange es in der inneren steckt, wird nicht runter gezählt.....-.-)
    gibt es vllt noch eine andere möglichkeit so eine restzeitanzeige umzusetzen?
     
  2. 1. August 2010
    AW: [Delphi] Timer innerhalb einer Prozedur starten

    Du startest den Timer schon, aber dieser ist inerhhalb desselben Threads und der Code kann nur nacheinander bearbeitet werden, sprich solange deine Prozedur nicht zu Ende ist, wird der Code vom Timer nicht aufgerufen.

    Mfg Rushh0ur
     
  3. 2. August 2010
    AW: [Delphi] Timer innerhalb einer Prozedur starten

    naja er wird ja schon gestartet. er läuft sogar in der for schleife weiter. nur sobald die zweite for schleife startet, bleibt er stehen. danach läuft er dann weiter...
     
  4. 2. August 2010
    AW: [Delphi] Timerproblem

    Sicher? Normalerweise wird das OnTimer Event nicht ausgefürt wenn der Thread anderweitig beschäftig ist, wie bei dir mit der Prozedur.

    Es sei den du verwendest iwo in dieser den Befehl Application.ProcessMessages; dann werden alle Ereignisse zusätzlich (rekursiv) verarbeitet.

    //Edit:
    Anscheinend dauert deine Prozedur ne weile bis es verarbeitet ist wodurch sich deine ganze Anwendung "aufhängt" und du versuchst mit diversen mitteln dies zu unterbinden.
    Ein Tipp: Versuch doch deine Schleifen in einen Timer auszulagern wobai das Interval 1 beträgt oder noch besser du Verwendest nen Thread dafür

    Mfg Rushh0ur
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.