Announcement

Collapse
No announcement yet.

Datei in Papierkorb verschieben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datei in Papierkorb verschieben

    Hi.
    Ich habe eine kleine Funktion geschrieben, die eine Datei in den Papierkorb verschiebt. Obwohl ich nur eine Datei übergebe, wird nach dem
    Löschen von 2 oder mehreren Dateien gefragt. Wo kann der Fehler liegen?

    bool ToBasket(String datei)<br>
    {<br>
    TSHFileOpStruct *SHFileOpStruct;<br>
    SHFileOpStruct = new TSHFileOpStruct;<br>
    SHFileOpStruct->hwnd = 0;<br>
    SHFileOpStruct->wFunc = FO_DELETE;<br>
    SHFileOpStruct->pFrom = datei.c_str();<br>
    SHFileOpStruct->pTo = NULL;<br>
    SHFileOpStruct->fFlags = FOF_ALLOWUNDO + FOF_SIMPLEPROGRESS;<br>
    SHFileOpStruct->hNameMappings = NULL;<br>
    SHFileOpStruct->lpszProgressTitle = NULL;<br>
    <br>
    if (SHFileOperation(SHFileOpStruct))<br>
    return (true);<br>
    else<br>
    return (false);<br>
    }

  • #2
    pFrom muss doppelt Nullterminiert werden, vielleicht ist das der Fehler.
    (Auszug Hilfe:

    pFrom

    Pointer to a buffer that specifies one or more source file names. Multiple names must be null-separated. The list of names must be double null-terminated.

    )

    Gruß Thorste

    Comment


    • #3
      Danke.
      Und wie mache ich das

      Comment


      • #4
        Also ich bin den Weg über die gute alte sprintf() gegangen, aber ich denke es gibt noch einen eleganteren Weg.<br>

        <pre>

        char *name;
        name = new char[datei.Length() + 2];
        sprintf(name, "%s%c",datei.c_str(),'\0');

        LPSHFILEOPSTRUCT SHFileOpStruct;
        SHFileOpStruct = new SHFILEOPSTRUCT;
        SHFileOpStruct->hwnd = Handle;
        SHFileOpStruct->wFunc = FO_DELETE;
        SHFileOpStruct->pFrom = name;
        SHFileOpStruct->pTo = NULL;
        SHFileOpStruct->fFlags = FOF_ALLOWUNDO + FOF_SIMPLEPROGRESS;
        SHFileOpStruct->hNameMappings = NULL;
        SHFileOpStruct->lpszProgressTitle = NULL;

        SHFileOperation(SHFileOpStruct);
        delete[] name;
        </pre&gt

        Comment

        Working...
        X