让我一次删个够!!!!!!!!!!!!!(50分)

  • 主题发起人 主题发起人 大傻子
  • 开始时间 开始时间

大傻子

Unregistered / Unconfirmed
GUEST, unregistred user!
一、如何一次性清除IE的历史记录(不用IE的清除历史记录)。
二、如何一次性删除正个目录下的所有文件!
注:以上两个问题要用程序完成!谢谢请指教!

; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;大傻子上
 
第一个问题不太清楚,估计是写在注册表,或Windows目录下的某个文件夹里。
第二个问题:
{使用这个单元递归调用删除整个目录树}


unit DeleTree;

interface
uses Classes, FileCtrl, SysUtils;

procedure RemoveTree(path: string);
procedure RemoveDirectory(path: string);
procedure GetFileList(FileSpec: string;
; ; ; ; ; ; ; ; ; ; ; ;NamesOnly: Boolean;
; ; ; ; ; ; ; ; ; ; ; ;var FileList: TStringList);
procedure GetSubDirList(DirRoot: string;
; ; ; ; ; ; ; ; ; ; ; ;NamesOnly: Boolean;
; ; ; ; ; ; ; ; ; ; ; ;var SubDirList: TStringList);
function BackSlash(FileSpec: string): string;
function NoBackSlash(FileSpec: string): string;

implementation

{--------------------------------------------------------}
{这个过程删除整个目录树}
procedure RemoveTree(path: string);
var
; SubDirList: TStringList;
; FileList: TStringList;
; i: integer;
begin
; SubDirList := TStringList.Create;
; GetSubDirList(path,False,SubDirList);
; {如果这个树含有子目录,递归调用删除每一个子目录树}
; if SubDirList.Count>0 then
; begin
; ; for i := 0 to SubDirList.Count-1 do
; ; begin
; ; ; RemoveTree(SubDirList);
; ; end;
; end;
; SubDirList.free;
; {到这一步所有的子目录树都已被删除,或者根本不存在。因而你们仅需要删除所有的文件}
; FileList := TStringList.Create;
; GetFileList(BackSlash(path)+'*.*',False,FileList);
; for i := 0 to FileList.Count-1 do
; begin
; ; DeleteFile(PChar(FileList));
; end;
; FileList.Free;
; RemoveDirectory(path);
end;


{--------------------------------------------------------}
{这个过程将删除目录(如果它存在)}
procedure RemoveDirectory(path: string);
var
; Dir: string;
begin
; {删除反斜线(如果它存在)}
; Dir := NoBackSlash(path);
; if DirectoryExists(Dir) then RmDir(Dir);
end;

{--------------------------------------------------------}
{这个过程把所有匹配文件规格的文件名加入一个StringList。如果NamesOnly是true,那么不包含文件路径}
procedure GetFileList(FileSpec: string;
; ; ; ; ; ; ; ; ; ; ; NamesOnly: Boolean;
; ; ; ; ; ; ; ; ; ; ; var FileList: TStringList);
var
; SR: TSearchRec;
; DosError: integer;
begin
; FileList.Clear;
; DosError := FindFirst(FileSpec, faAnyFile-faDirectory, SR);
; while DosError=0 do
; begin
; ; if NamesOnly
; ; ; then FileList.Add(SR.Name)
; ; ; else FileList.Add(ExtractFilePath(FileSpec)+SR.Name);
; ; DosError := FindNext(SR);
; end;
end;

{--------------------------------------------------------}
{这个过程将指定的目录的全部下级目录名加入StringList。如果NamesOnly是true,那么仅仅包括最下级目录名}
procedure GetSubDirList(DirRoot: string;
; ; ; ; ; ; ; ; ; ; ; ; NamesOnly: Boolean;
; ; ; ; ; ; ; ; ; ; ; ; var SubDirList: TStringList);
var
; SR: TSearchRec;
; DosError: integer;
; Root: string;
begin
; SubDirList.Clear;
; {在最后加入一个反斜杠(如果不存在)}
; Root := BackSlash(DirRoot);
; {使用FindFirst/FindNext返回下级目录}
; DosError := FindFirst(Root+'*.*', faDirectory, SR);
; while DosError=0 do
; begin
; ; {don't include the directories . and ..}
; ; if pos('.',SR.Name)<>1 then
; ; begin
; ; ; if SR.Attr=faDirectory then
; ; ; begin
; ; ; ; if NamesOnly
; ; ; ; ; then SubDirList.Add(SR.Name)
; ; ; ; ; else SubDirList.Add(Root+SR.Name);
; ; ; end;
; ; end;
; ; DosError := FindNext(SR);
; end;
end;

{--------------------------------------------------------}
{添加一个反斜杠(如果它不存在)}
function BackSlash(FileSpec: string): string;
begin
; if (FileSpec[length(FileSpec)]<>'/')
; ; ;then Result := FileSpec+'/'
; ; ;else Result := FileSpec;
end;

{删除一个反斜杠(如果它存在)}
function NoBackSlash(FileSpec: string): string;
begin
; if (FileSpec[length(FileSpec)]='/')
; ; ;then Result := Copy(FileSpec,1,length(FileSpec)-1)
; ; ;else Result := FileSpec;
end;

end.
 
1、2 :
删除目录下的所有文件和文件夹,不管文件夹是否为空

function DoRemoveDir(sDirName:String):Boolean;
var
; ;hFindFile:Cardinal;
; ;tfile:String;
; ;sCurDir:String;
; ;bEmptyDir:Boolean;
; ;FindFileData:WIN32_FIND_DATA;
begin
; ;bEmptyDir:=True;
; ;sCurDir:=GetCurrentDir;
; ;SetLength(sCurDir,Length(sCurDir));
; ;ChDir(sDirName);
; ;hFindFile:=FindFirstFile('*.*',FindFileData);
; ;if hFindFile<>INVALID_HANDLE_VALUE then
; ;begin
; ; ; ; repeat
; ; ; ; ; ; ; tfile:=FindFileData.cFileName;
; ; ; ; ; ; ; if (tfile='.') or (tfile='..') then
; ; ; ; ; ; ; begin
; ; ; ; ; ; ; ; ;bEmptyDir:=bEmptyDir and True;
; ; ; ; ; ; ; ; ;Continue;
; ; ; ; ; ; ; end;
; ; ; ; ; ; ; bEmptyDir:=False;
; ; ; ; ; ; ; if FindFileData.dwFileAttributes=
; ; ; ; ; ; ; FILE_ATTRIBUTE_DIRECTORY then
; ; ; ; ; ; ; begin
; ; ; ; ; ; ; ; ; ;if sDirName[Length(sDirName)]<>'/' then
; ; ; ; ; ; ; ; ; ; ; DoRemoveDir(sDirName+'/'+tfile)
; ; ; ; ; ; ; ; ; ;else
; ; ; ; ; ; ; ; ; ; ; DoRemoveDir(sDirName+tfile);
; ; ; ; ; ; ; ; ; ;if not RemoveDirectory(PChar(tfile)) then
; ; ; ; ; ; ; ; ; ; ; result:=false
; ; ; ; ; ; ; ; ; ;else
; ; ; ; ; ; ; ; ; ; ; result:=true;
; ; ; ; ; ; ; end
; ; ; ; ; ; ; else
; ; ; ; ; ; ; begin
; ; ; ; ; ; ; ; ; ;if not DeleteFile(PChar(tfile)) then
; ; ; ; ; ; ; ; ; ; ; result:=false
; ; ; ; ; ; ; ; ; ;else
; ; ; ; ; ; ; ; ; ; ; result:=true;
; ; ; ; ; ; ; end;
; ; ; ; until FindNextFile(hFindFile,FindFileData)=false;
; ;end
; ;else
; ;begin
; ; ; ; ChDir(sCurDir);
; ; ; ; result:=false;
; ; ; ; exit;
; ;end;
; ;if bEmptyDir then
; ;begin
; ; ; ; ChDir('..');
; ; ; ; RemoveDirectory(PChar(sDirName));
; ;end;
; ;ChDir(sCurDir);
; ;result:=true;
end;

function DeleteDir(sDirName:String):Boolean;
begin
; ; ; if Length(sDirName)<=0 then
; ; ; ; ;exit;
; ; ; Result:=DoRemoveDir(sDirName) and RemoveDir(sDirName);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
; if DeleteDir('c:/tyn') then
; ; ShowMessage('ok');
end;
 
1。C:/Documents and Settings/。。。/Local Settings/History

WINXP下。。
 
shfileoperation不行吗?
 
多人接受答案了。
 
后退
顶部