Programm für die abfrage ob Ordnerstruckturen vorhanden sind


  • Administrator

    Ich kann mich nur wiederholen, mit Standard C++ Mitteln ist sowas unmöglich und auf Windows ohne WinAPI ist es auch unmöglich.

    Du musst also entweder mit der WinAPI zusammenarbeiten oder mit einer Bibliothek, welche die WinAPI einsetzt. Da gibt es kein drum herum. Wenn du dich dafür noch nicht bereit siehst, dann solltest du derzeit lieber probieren etwas anderes zu machen.

    Grüssli



  • Ok, und wie würde sowas dann im zusammenspeil mit der WinAPI aussehen?



  • LoRdNyCoN schrieb:

    Ok, und wie würde sowas dann im zusammenspeil mit der WinAPI aussehen?

    Wie Dravere schon gesagt hat, kannst du das mit Boost::filesystem machen.



  • Könntest du mir mal ein Codebeispiel dafür posten?

    Wäre wirklich supi, da verstehe ich das besser wenn ichs auch sehe...



  • LoRdNyCoN schrieb:

    Könntest du mir mal ein Codebeispiel dafür posten?

    Wäre wirklich supi, da verstehe ich das besser wenn ichs auch sehe...

    Du musst boost sowieso zuerst mal laden und installieren. Dann schadet es nicht, wenn du dich gleich mal mit der Page vertraut machst.

    http://www.boost.org/doc/libs/1_36_0/libs/filesystem/doc/index.htm#Introduction


  • Administrator

    #include <windows.h>
    
    #include <iostream>
    
    int main()
    {
      WIN32_FIND_DATA findData;
    
      ::ZeroMemory(&findData, sizeof(WIN32_FIND_DATA));
    
      HANDLE searchHandle = ::FindFirstFile(L"C:\\Programme\\VCL", &findData);
    
      if(INVALID_HANDLE_VALUE != searchHandle &&
         FILE_ATTRIBUTE_DIRECTORY == findData.dwFileAttributes)
      {
        std::cout << "Directory is available!" << std::endl;
      }
      else
      {
        std::cout << "Directory is not available!" << std::endl;
      }
    
      FindClose(searchHandle);
    
      std::cin.get();
    
      return 0;
    }
    

    Hast Glück, dass ich grad an einem eigenen Problem nicht weiterkomme. Sonst schreibt man hier meistens nicht einfach so Code rein. Das sollte schliesslich deine Aufgabe sein. Man lernt nur, in dem man es selber macht 😉

    Ich bin im übrigen nicht mehr so geübt mit WinAPI, ich hoffe aber es stimmt. Hier noch eine Referenz zur FindFirstFile Funktion:
    http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx

    Grüssli



  • Vielen Dank dafür, so versteht man auch die logik die dahinter steckt...

    Ich bin eigentlich schon immer darauf fixiert, das selber zu raffen, aber geht halt nicht immer ohne beispiel.
    Werde ich nacher gleich testen, und berichten 😃



  • Nun sagt mir mein Compiler folgendes...

    cannot convert `const wchar_t*' to `const CHAR*' for argument `1' to `void* FindFirstFileA(const CHAR*, _WIN32_FIND_DATAA*)'

    Was soll mir das sagen?



  • Eine andere Möglichkeit, die wohl eleganter wäre fragt die entsprechende Systemvariable ab. Das Beispiel unten fragt die PATH-Variable ab.

    /* getenv example: getting path */
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
      char * pPath;
      pPath = getenv("PATH");
      if (pPath!=NULL)
        printf ("The current path is: %s",pPath);
      return 0;
    }
    


  • Hallo,

    LoRdNyCoN schrieb:

    Nun sagt mir mein Compiler folgendes...

    cannot convert `const wchar_t*' to `const CHAR*' for argument `1' to `void* FindFirstFileA(const CHAR*, _WIN32_FIND_DATAA*)'

    Was soll mir das sagen?

    Dass du entweder in den Projekteinstellungen den Zeichensatz von UNICODE auf Multi-Byte oder "nicht gesetzt" umschalten oder das L vor "C:\\Programme\\VCL" entfernen musst.

    MfG,

    Probe-Nutzer


Anmelden zum Antworten