SHFILEOPSTRUCT - Cannot read from the source file or disk.



  • Hallo

    Ich habe ein Problem beim Kopieren mit SHFILEOPSTRUCT. Variante 1 funktioniert. Variante 2 bringt "Cannot read from the source file or disk."

    Variante 1:

    void SAVEFolder(CString szFrom, CString szTo)
    {
        SHFILEOPSTRUCT shfos_Folder;
    
        shfos_Folder.pFrom = "C:\\Folder1\\*.*";
            shfos_Folder.pTo = szTo;
        shfos_Folder.hwnd = NULL;
        shfos_Folder.wFunc = FO_COPY;
            shfos_Folder.fFlags = FOF_NOCONFIRMMKDIR | FOF_NOCONFIRMATION;
    
            SHFileOperation(&shfos_Folder);
    }
    

    Variante 2:

    void SAVEFolder(CString szFrom, CString szTo)
    {
        szFrom=szFrom+"\\*.*";
        szTo=szTo+"\\";
    
        SHFILEOPSTRUCT shfos_Folder;
    
        shfos_Folder.pFrom = szFrom;
            shfos_Folder.pTo = szTo;
        shfos_Folder.hwnd = NULL;
        shfos_Folder.wFunc = FO_COPY;
            shfos_Folder.fFlags = FOF_NOCONFIRMMKDIR | FOF_NOCONFIRMATION;
    
            SHFileOperation(&shfos_Folder);
    }
    

    Habe nur ich das Gefühl, oder ist SHFILEOPSTRUCT nicht besonders gut dokumentiert? 😕
    Ich würde mich echt freuen wenn mir einer helfen könnte...



  • wofür is'n das da?

    szTo=szTo+"\";

    bei variante 1 hast du auch nich noch ein \ drangemacht



  • szTo=szTo+"\";
    Spielt keine Rolle... habe ein wenig experimentiert. Ich habe mit CSTRING::Compare szFrom der Variante 1 und 2 verglichen. Kein Unterschied. Aber irgendwo da muss ja das Problem sein. Oder?



  • lass einfach mal den string ausgeben 🙂



  • Wenn ich mit mit MessageBox szFrom ausgebe, sieht alles ok aus. Anders gesagt szFrom von Variante 1 ist gleich wie szFrom von Variante 2. (CString::Compare gibt ja auch 0 zurück).



  • Ich habs:

    szFrom+='\0';



  • Kannst du vielleicht deinen aktuellen Code, in dem du die VErzeichnisnamen den CStrings übergibst hier mal posten!

    Ich habe nämlich dasselbe Problem!

    Danke schon mal im vorraus!


Anmelden zum Antworten