var DirInfo: TSearchRec; r : Integer; begin r := FindFirst(\'C:\\Download\\Test\\*.*\', FaAnyfile, DirInfo); while r = 0 do begin if ((DirInfo.Attr and FaDirectory <> FaDirectory) and (DirInfo.Attr and FaVolumeId <> FaVolumeID)) then if DeleteFile(pChar(\'C:\\Download\\test\\\' + DirInfo.Name)) = false then ShowMessage(\'Unable to delete : C:\\Download\\test\\\' + DirInfo.Name); r := FindNext(DirInfo); end; SysUtils.FindClose(DirInfo); if RemoveDirectory(\'C:\\Download\\Test\') = false then ShowMessage(\'Unable to delete direcotry : C:\\Download\\test\'); end;
Procedure DelDir(dir:string); var SearchRec: TSearchRec; begin If Copy(dir,Length(dir),1)<>\'\\\' then dir:=dir+\'\\\'; IF not DirectoryExists(dir) then begin showmessage(\'biblioeket \"\'+dir+\'\" findes ikke!\'); exit; end; If FindFirst(dir+\'*.*\', faAnyFile, SearchRec)=0 Then Repeat If SearchRec.Attr=faDirectory Then begin If (SearchRec.Name=\'.\')or(SearchRec.Name=\'..\') then Continue; //loop igennem underbibliotekerne (recursive) DelDir(dir+SearchRec.Name); end else begin //Gør et eller andet med filerne fundet i biblioteket DeleteFile(dir+SearchRec.Name); end; until FindNext(SearchRec) <> 0; //Slet Bibliotek removedir(dir+SearchRec.Name); FindClose(SearchRec); end;
ups blev ikke helt færdig med ovenstående kode forsøger igen!
UDDRAG FRA DELPHISEEK.COM
procedure TForm .Button Click(Sender: TObject); var DirInfo: TSearchRec; r : Integer;
Begin r := FindFirst(\'C:\\Download\\Test\\*.*\', FaAnyfile, DirInfo); while r = 0 do begin if ((DirInfo.Attr and FaDirectory <> FaDirectory) and (DirInfo.Attr and FaVolumeId <> FaVolumeID)) then if DeleteFile(pChar(\'C:\\Download\\test\\\' + DirInfo.Name)) = false then ShowMessage(\'Unable to delete : C:\\Download\\test\\\' + DirInfo.Name); r := FindNext(DirInfo); end; SysUtils.FindClose(DirInfo); if RemoveDirectory(\'C:\\Download\\Test\') = false then ShowMessage(\'Unable to delete direcotry : C:\\Download\\test\'); end;
du kan selvfølgelig også kalde deltree winexec(......\\deltree \"bibliotek der skal slettes\",1) dog er det ikke særlig pænt at bruge DOS kald så jeg foretrækker den anden
lidt i tråd med de allerede givne svar vil jeg anbefale det følgende :
unit FileHandling;
interface
uses ShellAPI, Windows, SysUtils; Function DeleteFiles( Files : String) : Boolean; Function CopyFiles( From, Dest : String) : Boolean; Function MoveFiles( From, Dest : String) : Boolean; Function RenameFiles( From, Dest : String) : Boolean; Function GetFileSize(FileName : TFileName) : Integer;
implementation
Function ExecuteOp(From : String; Dest : String; IdOp : Integer) : Boolean; var SHFileOpStruct : TSHFileOpStruct; zFrom, zDest : array [0..MAX_PATH+2] of Char; begin From := ExpandFileName(From); Dest := ExpandFileName(Dest); ZeroMemory(@zFrom, SizeOf(zFrom)); ZeroMemory(@zDest, SizeOf(zDest));
if IdOp <> FO_DELETE then SHFileOpStruct.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR else SHFileOpStruct.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
Result := Boolean(SHFileOperation(SHFileOpStruct)); Result := Result and (SHFileOpStruct.fAnyOperationsAborted); end;
Function CopyFiles( From, Dest : String) : Boolean; begin result := ExecuteOp(From,Dest, FO_COPY); end;
Function DeleteFiles( Files : String) : Boolean; begin Result := ExecuteOp(Files,\'\', FO_DELETE); end;
Function MoveFiles( From, Dest : String) : Boolean; begin Result := ExecuteOp(From,Dest, FO_MOVE); end;
Function RenameFiles( From, Dest : String) : Boolean; begin if (ExtractFilePath(From) <> \'\') and (ExtractFilePath(Dest) = \'\') then Dest := ExtractFilePath(From) + Dest; Result := ExecuteOp(From,Dest, FO_RENAME); end;
Function GetFileSize(FileName : TFileName) : Integer; var SearchRec : TSearchRec; begin if FindFirst(ExpandFileName(FileName), faAnyFile, SearchRec) = 0 then Result := SearchRec.Size else Result := -1; FindClose (SearchRec); end;
end.
du kalder så funktionen DeleteFiles(\'C:\\\');
Jens B
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.