Inhalte eines Ordners prüfen



  • oh man... du kannst echt probleme haben... 🙄

    einfach:

    nimm nen timer und frage in nem festen intervall dein verzeichnis ab. überprüfe ob sich dateien darin befinden (FindFirst, FindNext). wenn ja dann mach was damit, wenn nicht, dann kopieren eine ne hinein (CopyFile).

    einfach schöner:

    nimm eine komponente (http://www.ricosonntag.de/download/bcb/RSDirMonitor.zip) die auslöst, wenn eine datei ins verzeichnis kopiert/gelöscht wird und reagiere darauf. 😃



  • Klappt nicht wie ich das will mit dem Timner

    TTimer *timer1;
    timer1 = new TTimer(Form1);
       if (Query1->Fields->Fields[9]->AsString == "ISDN")
       {
        timer1->Interval = 500;
        timer1->OnTimer = doIt;
       }
    
    void __fastcall TForm1::doIt(TObject *Sender)
    {
      Memo1->Lines->SaveToFile("C:\\T_ISDN\\"+Query1->Fields->Fields[0]->AsString+"_nerv.gtw");
        Memo1->Lines->Clear();
        }
    

    wieso.. Er wartet zwar mit dem timer aber er füllt dann nicht richtig aus...
    das doch alles kagge gibts denn nicht ne einfache funktion wo ich sage

    z=1000
    ohne was passiert dann

    nach der 1 sec soll er einfach weitermachen wo ich den timer einsetze mehr net



  • 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.


Anmelden zum Antworten