TTimer



  • Hallo

    Ich habe ein Problem mit Timer. Wenn ich per Button->Caption "Test" den Timer 1 Starte schaltet sich der Button->Caption um auf "Go Test" und Timer1 startet. Nun Stoppe ich den Timer1 mit dem gleichen Button und Button heisst wieder Button->Caption "Test" und Timer 1 Stopt. Nun kann ich nach stoppen des Timers Ihn nicht mehr starten sondern muss das Programm schließen das er wieder starte woran liegt es.

    Beispiel dazu :

    if(Button1->Caption == "Test")
    {
    Timer1->Enabled = true;
    Button1->Caption = "Go Test";
    }
    else
    {
    Timer1->Enabled = false;
    Button1->Caption = "Test";
    }
    

    PS: ICH übernehme keine Haftung für Reschtschreibfehler 😃



  • Der hier gezeigte Code funktioniert sofern er in OnClick von Button1 verwendet wird ! Schaltet ständig den Timer an bzw. aus.
    Da mußt woanders ein Fehler sein, wenn es nicht funktioniert.
    was steht denn in deinem OnTimer Event ?



  • OldMan00 schrieb:

    Der hier gezeigte Code funktioniert sofern er in OnClick von Button1 verwendet wird ! Schaltet ständig den Timer an bzw. aus.
    Da mußt woanders ein Fehler sein, wenn es nicht funktioniert.
    was steht denn in deinem OnTimer Event ?

    Ja ist eine OnClick aktion.
    Im Timer Event steht "Timer1Timer"



  • Praetorianer_33 schrieb:

    Im Timer Event steht "Timer1Timer"

    Das ist schon klar, muß ja, ich meinte den Code !



  • void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    //Panel1->Caption = ComboBox1->Items->Strings[ComboBox1->ItemIndex];
    
    if(i < 50)
    {
    i++;
    IdHTTP1->Request->UserAgent = StrUserAgent;
    IdHTTP1->Request->ContentType = "text/html";
    IdHTTP1->Request->Referer = "http://my.server.de";
    
    	try
    		{
    			if(IdHTTP1->ResponseCode != StrLst->Strings[RV].SubString(0,3) )
    				{
    					IdHTTP1->Get(ComboBox1->Items->Strings[ComboBox1->ItemIndex]);
    
    					Button1->Caption = "("+IntToStr(i)+") Test";
    					Button1->Enabled = false;
    					Button2->Enabled = true;
    					Label3->Caption = "Link wurde ausgewählt.";
    					Label3->Font->Color = clGreen;
    
    				}
    			else
    				{
    					i=0;
    					Button1->Caption = "Test";
    					Timer1->Enabled=false;
    					Timer2->Enabled = false;
    					Button1->Enabled = true;
    					Button2->Enabled = false;
    				}
    		}
    	catch(Exception &e)
    		{
    			for(RV; RV < 41; RV++)
    			{
    				if(IdHTTP1->ResponseCode == StrLst->Strings[RV].SubString(0,3))
    					{
    					StatusBar1->Panels->Items[1]->Text = "ErrorCode "+AnsiString(StrLst->Strings[RV]);
    					//Memo2->Lines->Add(StrLst->Strings[RV]);
    						i=0;
    					Button1->Caption = "Start";
    					Timer1->Enabled=false;
    					Timer2->Enabled = false;
    					Button1->Enabled = true;
    					Button2->Enabled = false;
    					Label3->Caption = "Es ist ein Fehler aufgetreten. FehlerCode in der Statuszeile!";
    					Label3->Font->Color = clRed;
    					}
    
    			 }
    
    		} 
    }
    else
    {
    i=0;
    Button1->Caption = "Start";
    Timer1->Enabled=false;
    Timer2->Enabled = false;
    Button1->Enabled = true;
    Button2->Enabled = false;
    }
    }
    


  • na ja, ist natürlich jetz hier nicht nachzuvollziehen was genau geschiet, Exception oder nicht, i Definition usw. Stichwort 'Debugger'
    Ich gehe mal davon aus, daß hier der Fehler liegt, da Du ja im Timer den Timer auch deaktivierst bei bestimmten Umständen (die wahrscheinlich eintreten).

    Nun kann ich nach stoppen des Timers Ihn nicht mehr starten

    Definitive startest Du den Timer wieder, aber womöglich wird er durch den Code sofort wieder deaktiviert. Mußt Du im Debugger testen.



  • Hi,

    @Praetorianer_33, hab deinen Code mal durchgetestet; die Schleifen laufen durch.

    Wann startest du den Timer a la

    if(Button1->Caption == "Test")
    {
    Timer1->Enabled = true;
    Button1->Caption = "Go Test";
    }
    else
    {
    Timer1->Enabled = false;
    Button1->Caption = "Test";
    }
    

    Als Button-Click ? Dann gehts nämlich.
    EDIT : Button 3 !

    Und nix für ungut :

    PS: ICH übernehme keine Haftung für Reschtschreibfehler

    Das Komma hast du wahrlich nicht erfunden, aber mach es uns nicht so schwer
    und bringe lesbare Sätze rüber. 😞

    mfg
    kpeter


Anmelden zum Antworten