델파이7입문하루만에 이것저것 소스를 찾아서 저에겐 꼭 필요한 허접프로그램을 만들었습니다.
바로
윈2000에서지원되는 "디스크정리"툴로 지우지 않는
C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5
C:\Documents and Settings\Administrator\Local Settings\Temp
이 폴더안에 폴더와 파일을 지우려는 툴을 델파이로 만들었습니다.
이것 저것 추가하려던 차에.... 제대로 동작(특정 폴더 삭제)이 되나 연신 컴파일 전 델파이내에서 소스를 실행시켰더랍니다.
근데 소스내 삭제버튼을 실행하면 상당히 버벅되면서 프로세스가 "응답없음"으로 죽어버리는 겁니다. 해당 폴더내 파일도 몇개되지 않는데.. --;; 프로세스가 버벅거릴 필요가 없다는 얘기..
문제는 이제부터....... 정확한 오류 발생시점은 모르겠구요..
갑자기 project폴더내의 소스가 몽땅 사라졌습니다. 실행중인 꼭 필요한 파일만 빼고는
델파이가 설치된 드라이브가 D:였는 데 D;\드라이브내 폴더내 파일이 싹 삭제되어있더군요... 다른 드라이브는 이상없고..
한마디로 제가 만든 소스의 삭제함수로 지워진게 틀림없었습니다.
왜냐면 폴더만빼고 파일만 지우는 소스였거든요..
정말 어이없음;; 델파이가 저한테 복수한건가요???
현재도 가끔 파일과 서브폴더가 있는 폴더를 삭제시에.... 늦은 응답및 응답없음으로 프로세스가 죽는 경우가 발생합니다. ==;;
여러분도 이런 경우 있나요?
아래 소스가 대표적인 함수와 실행...
====================================================================
procedure TForm1.Button2Click(Sender: TObject);
var Searchrec : TSearchrec;
dir : string;
begin
dir := 'C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files';
deletedirectory(dir);
removedir; //rmdir(dir); //실제로는 디렉토리 삭제 안됨
end;
procedure tform1.deletedirectory(dir : string);
var Searchrec : TSearchrec;
i : integer;
st : string ; //경로조립할 문자열
begin
st := dir + '\*.*';
findfirst(st, faanyfile, Searchrec);
i := 0;
while i = 0 do //정상적으로 찾아내었으면..
begin
if (Searchrec.Name = '.') or (Searchrec.Name = '..') then
begin
i := findnext(Searchrec); //다음 디렉토리, 화일을 찾음
continue;
end;
///////여기서 부터 삭제 시작///////
if directoryexists(dir + '\' + Searchrec.Name) then //찾은 것이 디렉토리이면
begin
st := dir + '\' + Searchrec.Name;
Deletedirectory(st);
i := findnext(Searchrec);
removedir//rmdir(st); // 실제로 디렉토리는 삭제안됨
continue;
end;
st := dir + '\' + Searchrec.Name;
Deletefile(st);
i := findnext(Searchrec);
end;
end;
================================================================================