do while Datei suchen Schleife anhalten



  • hei
    ich nutze folgenden Code, um im vorgegebenen Path Ordner und Dateien zu suchen. Application->ProcessMessages() setze ich zu abfangen von Button-Clicks ein.

    HANDLE fHandle;
    WIN32_FIND_DATA wfd;
    //
    fHandle=FindFirstFile(ch1,&wfd);   // Handle erstellen
    //
    do
      {
    Application->ProcessMessages();
      } 
    while (FindNextFile(fHandle,&wfd));
    //
    FindClose(fHandle);
    

    Was muß ich tun, das es ermöglicht, die Suche anzuhalten und an der Stelle wieder fortsetzen ohne das alles wieder von vorne abläuft?
    bis bald
    dieleena 😉



  • Indem du fHandle nicht gleich nach der Schleife sondern wirklich erst dann mit FindClose beendest sobald du es nicht mehr brauchst.

    HANDLE fHandle; //schon im Header deklarieren.
    //--------------------------------------------------------------------
    
    WIN32_FIND_DATA wfd;
    //
    if(!fHandle) fHandle=FindFirstFile(ch1,&wfd);   // Handle erstellen
    //                                              // wenn noch nicht erstellt           
    do
      {
    Application->ProcessMessages();
      }
    while (FindNextFile(fHandle,&wfd));
    //
    //--------------------------------------------------------------------
    //Ganz ans Programmende oder sobald du dir sicher 
    //bist dass die Suche nicht mehr gestartet wird:
    FindClose(fHandle);
    


  • hei
    soweit habe ich es verstanden. In der Procedur das Handle wenn noch nicht erstellen. Benötige ich nicht noch ein Flag, um nach " Application->ProcessMessages()" ein weiteres suchen von "while (FindNextFile(fHandle,&wfd))" zu unterbinden ?

    bis bald
    dieleena



  • Hallo

    Wenn du eine Pause-Funktion einbauen willst, dann muß das tatsächlich noch hinzugefügt werden. rean ginbg es mehr um das Prinzip, due Suchdaten fHandlenicht lokal sondern als Member des entsprechenden Forms zu deklarieren.

    bis bald
    akari



  • hei
    ich werde das ganze mit der Pause-Funktion einbauen. Bei bedarf melde ich mich wieder.
    vorerst vielen Dank.
    bis bald
    dieleena


Anmelden zum Antworten