Announcement

Collapse
No announcement yet.

Löschen von Dateinen (mit SubDirs) / QuickFormat durchführen (D3.0x)

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

  • Löschen von Dateinen (mit SubDirs) / QuickFormat durchführen (D3.0x)

    <b>Hallo!<br><br>Ich möchte in meinem Prog. eine ausgewählte Festplatte komplett löschen. Wie kann ich mit Delphi optimal dies durchführen (del LW:\*.* /S) bzw. (QuickFormat LW:\)?<br><br>Die API-Hilfe von Delphi gibt mir da nur eine paar Hinweise in 'C'!.<br>Die angegebene Struktur 'LPSHFILEOPSTRUCT' müsste irgendwie in Delphi umgesetzt werden aber mir ist dies nicht gelungen...<br></b>
    <br>
    Performs a copy, move, rename, or delete operation on a file system object. <br><br>
    WINSHELLAPI int WINAPI SHFileOperation(LPSHFILEOPSTRUCT lpFileOp);<br><br>

    Parameter<br><br>

    &nbsp;&nbsp;&nbsp;lpFileOp Pointer to an SHFILEOPSTRUCT structure that contains information the function needs to carry out the operation.<br>
    &nbsp;&nbsp;&nbsp;Return Value Returns zero if successful or nonzero if an error occurs. <br><br>
    See Also<br>
    SHFILEOPSTRUCT <br><br><b>Die Struktur ist folgendermaßen aufgebaut: (C)<br></b>
    <br>
    typedef struct _SHFILEOPSTRUCT { // shfos<br>
    &nbsp;&nbsp;&nbsp;HWND hwnd;<br>
    &nbsp;&nbsp;&nbsp;UINT wFunc; <br>
    &nbsp;&nbsp;&nbsp;LPCSTR pFrom; <br>
    &nbsp;&nbsp;&nbsp;LPCSTR pTo; <br>
    &nbsp;&nbsp;&nbsp;FILEOP_FLAGS fFlags;<br>
    &nbsp;&nbsp;&nbsp;BOOL fAnyOperationsAborted; <br>
    &nbsp;&nbsp;&nbsp;LPVOID hNameMappings;<br>
    &nbsp;&nbsp;&nbsp;LPCSTR lpszProgressTitle; <br>
    } SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT; <br><br>
    Contains information that the SHFileOperation function uses to perform file operations.<br><br>
    <b>Danke!!!<br>&nbsp;&nbsp;&nbsp;Nico Stöckigt</b><br>

  • #2
    Hallo,

    mit dem folgenden Beispiel können alle Dateien (einschliesslich Unterverzeichnisse) eines Verzeichnisses gelöscht werden:

    <pre>
    procedure TForm1.ButtonDeleteDirClick(Sender: TObject);
    var
    aSHFOS : TSHFileOpStruct;
    szFrom : array[0..128] of Char;
    begin
    // Puffervariablen initialisieren (Doppel-Null!)
    FillChar(aSHFOS, Sizeof(aSHFOS), #0);
    FillChar(szFrom, Sizeof(szFrom), #0);
    // Zu löschendes Verzeichnis definieren
    StrPCopy(szFrom, 'C:\Test\StdOut');
    with aSHFOS do
    begin
    Wnd := Handle;
    wFunc := FO_DELETE;
    pFrom := @szFrom;
    fFlags := FOF_NOCONFIRMATION or FOF_ALLOWUNDO;
    fAnyOperationsAborted := False;
    end;
    ShFileOperation(aSHFOS);
    end;
    </pre>

    Wird die Zeichenkette 'C:\Test\StdOut' durch 'C:\' ausgetauscht, sollte die vollständige Festplatte gelöscht werden. Das habe ich allerdings - aus verständlichen Gründen - nicht ausprobiert ;-)

    P.S: Sollte Delphi wegen "unbekannten" Datenstrukturen/Funktionen meckern, sollte der <b>Source</b>-Verzeichnisbaum von Delphi durchsucht werden, um die einzubindende Unit (shellapi.pas) zu ermitteln.
    &#10

    Comment

    Working...
    X