我用下面的代码实现在目录的删除,可是运行老是出错呀。编译能过。
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.

解决方案 »

  1.   

    SHFileOperation-- [Now Supported on Windows NT]
      

  2.   

    删除一子目录及其下面的文件 
        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;