我用下面的代码实现在目录的删除,可是运行老是出错呀。编译能过。
uses shellapi;
procedure TForm1.Button2Click(Sender: TObject);
var T:TSHFileOpStruct; P:String;begin P:='c:\aa'; with T do begin Wnd:=0; wFunc:=FO_DELETE; pFrom:=Pchar(P); fFlags:=FOF_ALLOWUNDO end; if SHFileOperation(T)=0 then ShowMessage('删除成功') else ShowMessage('删除失败');end;
出错提示
project project1.exe rasied exception class EAcessViolation with message 'Access violation at address
77EB1657 in module 'kernel32.dll',read of address f5bc0043',process stopped.use step or run to continue.
uses shellapi;
procedure TForm1.Button2Click(Sender: TObject);
var T:TSHFileOpStruct; P:String;begin P:='c:\aa'; with T do begin Wnd:=0; wFunc:=FO_DELETE; pFrom:=Pchar(P); fFlags:=FOF_ALLOWUNDO end; if SHFileOperation(T)=0 then ShowMessage('删除成功') else ShowMessage('删除失败');end;
出错提示
project project1.exe rasied exception class EAcessViolation with message 'Access violation at address
77EB1657 in module 'kernel32.dll',read of address f5bc0043',process stopped.use step or run to continue.
The following example demonstrates deleting all the files in a directory and then the directory itself. Additional processing would be required to delete read only files and files that are in use. procedure TForm1.Button1Click(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;