Inhalte eines Ordners prüfen



  • Sleep(1000);



  • Hallo

    Debugge und schau, was in Query1->Fields->Fields[0]->AsString zum Zeipunkt des OnTimer steht.

    Desweiteren : warum benutzt du TTimer nicht als Komponente über den Formulardesigner?

    bis bald
    akari



  • Mit dem Sleep ist schon ne feine Sache nur reagiert mein Programm dann nicht mehr sonder hängt nur im Tray rum bis alles vorbei ist das ein Problem 🙂



  • Willst du den Kuchen nun essen oder behalten? 😕



  • azad187 schrieb:

    Mit dem Sleep ist schon ne feine Sache nur reagiert mein Programm dann nicht mehr sonder hängt nur im Tray rum bis alles vorbei ist das ein Problem 🙂

    Deshalb sollst du ja auch Timer verwenden.



  • Was wird denn das für eine Anwendung ?
    Kann absolut nicht nachvollziehen wozu sowas gut sein soll.
    Willst du allen Kunden nacheinander 500 EMails schicken ? 🤡



  • ja gut ehh dann müsste ich erstmal wissen wie das geht.

    warum kann man denn net infach sagen

    Timer1->OnTimer
    {
    Hier was er nach den 3 sek alles machen soll und net extra void 😃
    }

    und danach das ganze wieder von vorne 😃

    if (Query1->Fields->Fields[9]->AsString == "ISDN")
       {
       Timer1->Enabled=true;
       Timer1->Interval=3000;
       Timer1->OnTimer;
        Memo1->Lines->SaveToFile("C:\\T_ISDN\\"+Query1->Fields->Fields[0]->AsString+"_ODDEST.gtw");
        Memo1->Lines->Clear();
       Timer1->Enabled=false;
       }
    

    funzt aber so leider nicht soll aber so funzen sinngemäß 🙂



  • Genau so funktioniert es doch

    a) benutze die Komponente
    b) was ist das

    Timer1->OnTimer;

    Im OnTimer Ereignis als erste Zeile
    Timer1->Enabled=false;

    ... hier das was erledigt werden soll

    als letzte Zeile
    Timer1->Enabled=true;

    Das ist ganz einfach



  • if (Query1->Fields->Fields[9]->AsString == "ISDN") 
       { 
       Timer1->Enabled=true; 
       Timer1->Interval=3000; 
       Timer1->OnTimer; 
        Memo1->Lines->SaveToFile("C:\\T_ISDN\\"+Query1->Fields->Fields[0]->AsString+"_ODDEST.gtw"); 
        Memo1->Lines->Clear(); 
       Timer1->Enabled=false; 
       }
    

    Wenn du deinen Timer startest, heisst das nicht, das das Programm dann bis auf das OnTimer Ereignis wartet .... 🙄



  • if (Query1->Fields->Fields[9]->AsString == "ISDN")
       {
       Timer1->OnTimer = Timer1Timer;
       }
    
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    Timer1->Enabled=false;
    Memo1->Lines->SaveToFile("C:\\T_ISDN\\"+Query1->Fields->Fields[0]->AsString+"_nerv.gtw");
        Memo1->Lines->Clear();
    Timer1->Enabled=true; 
    }
    

    so hab ich das nach deiner Aussage müsste er ja jetzt jedsmal 3000msec warten und dann alles eintragen wie vorher macht er aber net.



  • Mein Programm muss aber warten 3 sec nach dem ersten durchlauf
    bevor meine 2ter schleifendurchlauf anfängt muss es 3sec warten koste was es wolle nur es darf nicht so sleepen dann ist es ja im tray und überlastet alles 😃



  • Wieso, er macht doch das was du ihm sagst.

    OnTimer ausgelöst:

    Timer1->Enabled=false;//Timer anhalten
    Memo1->Lines->SaveToFile("C:\\T_ISDN\\"+Query1->Fields->Fields[0]->AsString+"_nerv.gtw");//Inhalt von Memo1 speichern
    Memo1->Lines->Clear();//Memo1 löschen (d.h. wenn du es nicht innerhalb von 3 Sek wieder füllst speichert er ein leeres Memo)
    Timer1->Enabled=true;//Timer wieder neu starten
    


  • Ja dann kann ich nunmal nix mit dem Timer anfangen
    er soll einfach nur am Ender der Schleife 3Sekunden warten bis er wieder anfängt checkt ihrs net der timer timt zawr blöde rum hält aber meine schleife net davon ab weiter zu machen !!!



  • Will doch nur das einfachste von der welt

    WENN 3 SEKUNDEN VERGANGEN MACH WEITER 😃

    kann doch net sein das es so eine Funktion in c++ nicht gibt???

    Sleep(3000); ist schon fast perfekt nur das das programm nicht mehr reagiert ist voll bekloppt 🙂



  • Dann musst du dir vielleicht mal überlegen, ob du deine Schleife überhaupt brauchst ???
    Mach das was in deiner Schleife passiert im OnTimer Ereignis ....



  • Du hast doch einen konzeptionellen Fehler!

    er soll einfach nur am Ender der Schleife 3Sekunden warten bis er wieder anfängt checkt ihrs net der timer timt zawr blöde rum hält aber meine schleife net davon ab weiter zu machen !!!

    Und -sorry- Schreibe ohne Dialekt mit Satzzeichen, dann kann man die Texte auch verstehen



  • war klar das sowas kommen muss..

    Ich habe es auch nochmal versucht nach der anderen Methode die ganze Schleife als Timer zu nehmen

    ButtonKlick = Ontimer Start

    und im Ontimer hatte ich alles drinne nur leider hat er nicht 1x was gemacht 🙂 die idee hört sich ja nicht schlecht an

    am anfang bevor die schleife beginnt setz er den timer zurück und am ende startet er ihn wieder nur leider gings net 😃

    also somit kann mir keiner mit dem Problem helfen ?
    Es gibt also definitiv keine Funktion âla sleep die nicht rumnervt.



  • Nochmal sorry -> Du hast ein Fehler in deinem Konzept der Programmierung in Zusammenarbeit mit dem Timer.

    Der Timer wird alle x Sekunden ausgelöst und würde etwas im OnTimer erledigen. Also musst du das was alle x-Sekunden erledigt werden soll da rein programmieren. Wenn du dein

    Memo1->Lines->SaveToFile("C:\\T_ISDN\\"+Query1->Fields->Fields[0]->AsString+"_nerv.gtw");//Inhalt von Memo1 speichern
    

    In den OnTimer schreibst, wird es alle x gespeichert.



  • Wie gesagt ich hatte das schon bemerkt aber ich sage nochmal
    ich habe dann alles in den OnTimer reingeschrieben...

    den per Buttonklick starten lassen
    den intervall auf 3sec
    vor anfang der schleife im Timer dann

    false

    ... Schleife....

    true

    so dachte ich würde er alle x Sek die schleife wiederholen nur nicht passierte 😕



  • Dann wirst du einen allg. unbekannten Spezialtimer haben.


Anmelden zum Antworten