창이 두개 있는 화일 매니저같은(?)것을 만들어 보려고 합니다...
여기서 각각의 화일 리스트박스에서의 [DEL]키 처리는 별 문제
가 없지만... 양쪽의 화일창중 한쪽의 화일 리스트에서 화일을
몇개 선택한후(여를 들어 오른쪽, FileListBox2) 가운데 있는
삭제버튼을 눌렀을때... 조금전에 선택된 오른쪽 화일이
지워지게 하고 싶은데... 어떻게 하면 되나요...
물론 왼쪽의 화일도 이런 저런 이유로 몇가지 화일이 선택
되어 있다고 가정을 합니다. 이런경우 왼쪽의 화일이 지워지면 않되겠죠...^^
그리고 또한가지...
파일의 디렉토리를 서브 디렉토리까지 지우려고 하는데...
잘않되는군요... 재귀호출방식으로... 좀 가르쳐 주세요....^^;
전 초보입니다.
지워주고 아니면 현 디렉토리만 지웁니다.
두번 째 인자가 '*.*'이면 모든파일을 지워요.
그럼 좋은 하루 되셔요.
{**Summary ======================================================
NAME : DeleteFiles
PARAMS : const Path, Mask : string; recursive : boolean
RETURNS : -
PURPOSE : delete several files with joker.
Optional recursive = search in subdirectories.
EXAMPLE : DeleteFiles ('c:temp', '*.txt', True);
UPDATES :
NOTES :
CODED : PT 15.10.96
===============================================================*}
procedure DeleteFiles (const Path, Mask : string; recursive : boolean);
var
Result : integer;
SearchRec : TSearchRec;
begin
Result := FindFirst(Path + Mask, faAnyFile - faDirectory, SearchRec);
while Result = 0 do
begin
if not DeleteFile (Path + SearchRec.Name) then
begin
FileSetAttr (Path + SearchRec.Name, 0); { reset all flags }
DeleteFile (Path + SearchRec.Name);
end;
Result := FindNext(SearchRec);
end;
FindClose(SearchRec);
if not recursive then
exit;
Result := FindFirst(Path + '*.*', faDirectory, SearchRec);
while Result = 0 do
begin
if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
begin
FileSetAttr (Path + SearchRec.Name, faDirectory);
DeleteFiles (Path + SearchRec.Name + '', Mask, TRUE);
RmDir (Path + SearchRec.Name);
end;
Result := FindNext(SearchRec);
end;
FindClose(SearchRec);
end;