Timer



  • Hallo ,
    ich habe ein pfad und drin gibt es eine text datei (beispiel.txt).
    Ich drücke auf ein button und , ich prüfe den Pfad und sehe dass es beispiel.txt existiert. Aber Beispiel.txt wird irgendwann durch ein anderes Programm gelöscht.
    Ich möchte aber ein Timer programmieren ,der nach dem Button drück prüft bis die beispiel.txt nicht mehr da ist.
    Als zusammenfassung, ich dürck auf dem Button , text datei ist da aber ich will auch nach dem Button drück jede 10 ms einmal gucken ob der text datei da ist. Wenn ich bekomme ich eine meldung..

    Mein problem ist , ich weiß nicht wie man so ein Timer programmieren kann. Ich hab bisscheb gegoogelt aber hab nix gescheites gefunden.
    Kann mir jemand bitte so ein beispiel code senden oder paar tipps geben..
    Vielen Dank



  • #include <windows.h>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	SYSTEMTIME st;
    
    	while(true)
    	{
    		GetSystemTime(&st);
    
    		if(st.wMilliseconds == 0 || st.wMilliseconds % 10 == 0)
    			cout << "Wieder 10 Sekunden um." << endl;
    	}
    }
    

    sowas?



  • cout << "Wieder 10 Sekunden um." << endl;

    fail 😃 natürlich ms





  • Ja aber wo prüfe ich ob mein Beispiel.txt existiert oder weg ist ?
    Wenn es weg ist sollte eine Meldung kommen.

    Ich weiß nicht wo genau ich das prüfe??



  • Ich sag mal so , wenn die datei existiert also wenn beispiel.txt da ist, sollte ich anfangen zu prüfen . Wenn ich bei der Prüfzeit sehe dass beispiel.txt verschwunden ist, dann sollte eine meldung kommen und das wars.



  • Versuch die Datei mit fOpen die Datei zum lesen zu öffnen.
    Bekommst Du einen Nullpointer vom Typ FILE zurück. kannst Du nicht zugreifen.
    Somit sollte Sie gelöscht sein.
    Wenn der Pointer != NULL ist, Datei schliessen und wieder 10 sec warten.

    So würde ich die Datei überprüfen. Oder hast Du Probleme einen Timer zu erstellen?
    Oli_1977



  • int ExistFile (CString fnam)
    {
       FILE * f= fopen (fnam,"r");
    
       if (!f) 
           return 0;
    
       else 
       {
           fclose(f); // dann ging's. Also wieder zu damit
           return 1;
       }
    }
    


  • soll ich dann so was machen

    #include <windows.h> 
    #include <iostream> 
    using namespace std; 
    
    int main() 
    { 
        SYSTEMTIME st; 
         ExistFile(irgendwas);
        while(true) 
        { 
            GetSystemTime(&st); 
    
            if(st.wMilliseconds == 0 || st.wMilliseconds % 10 == 0) 
                cout << "Wieder 10 Sekunden um." << endl; 
        } 
    }
    

    ich habe die verbindung zwischen den code und Existfile nicht verstanden



  • hab die sache erledigt ,
    Vielen Dank



  • Wiso benutzt du nicht WM_TIMER von Windows mit eine Intervall von 10ms wobei die 10ms denk ich eher zuviel des guten sind, aber egal. Ob das file Existiert kannst du doch ganz leicht mit

    CFile::GetStatus(LPCTSTR lpszFileName,CFileStatus& rStatus);
    

    rausfinden. Warum willst dfu in einer while auf dem File pollen, was soll das für ein programm werden? Soll das nur auf dem File pollen und sonnst nix machen?


  • Mod

    Zudem man auch noch Events verwenden kann um zu prüfen ob sich im Dateisystem was ändert. (Directory Change Notifications).

    Pollen ist in den meisten Fällen nur Ressourcen Verschwendung...


Anmelden zum Antworten