Q&A

  • [급질문] 디렉토리(하위 디렉, 파일포함) 한방에 지우기...
제 문제는...



하위 디렉토리들과 파일들을 한방에 날려야 하거든요...



Rx tools의 FileUtils.pas의 일부를 꺼내서 사용하려고 하는데...



하위 디렉토리들의 파일들은 다 지워지는데...



디렉토리는 지워지지 않더라구여...







아래의 소스를 보면...



function TFileUtilForm.ClearDir(const Path: string; Delete: Boolean): Boolean;

var

FileInfo: TSearchRec;

DosCode: Integer;

begin

Result := DirExists(Path);

if not Result then Exit;

DosCode := FindFirst(NormalDir(Path) + '*.*', faAnyFile, FileInfo);

try

while DosCode = 0 do begin

if (FileInfo.Name[1] <> '.') and (FileInfo.Attr <> faVolumeID) then

begin

if (FileInfo.Attr and faDirectory = faDirectory) then

Result := ClearDir(NormalDir(Path) + FileInfo.Name, Delete) and Result

else if (FileInfo.Attr and faVolumeID <> faVolumeID) then begin

if (FileInfo.Attr and faReadOnly = faReadOnly) then

FileSetAttr(NormalDir(Path) + FileInfo.Name, faArchive);

Result := DeleteFile(NormalDir(Path) + FileInfo.Name) and Result;

end;

end;

DosCode := FindNext(FileInfo);

end;



if Delete and Result and (DosCode = -18) and not ((Length(Path) = 2) and (Path[2] = ':')) then

// 이부분이 이상하구여... DosCode 가 -18 이면 무슨 뜻이에여? 18 아닌가여?

// -18을 18로 바꾸면... 디렉토리를 지우려다가 에러가 발생합니다. 도와주시면 정말로 감사하겠습니다...

begin

RmDir(Path);

Result := (IOResult = 0) and Result;

end;



finally

FindClose(FileInfo);

end;

end;



다른 방법들도 좋으니깐여...

도움좀 주세여... ^^



1  COMMENTS
  • Profile
    Hamteun 2001.01.05 02:32
    function DeleteFilewithUndo(sFileName: String): Boolean;

    var

    fos : TSHFileOpStruct;

    begin

    FillChar(fos,SizeOf(fos),0);



    with fos do

    begin

    wFunc := FO_MOVE;

    pFrom := PChar(sFileName);

    fFlags := FOF_WANTMAPPINGHANDLE or FOF_NOCONFIRMATION or FOF_SILENT;

    end;

    Result := ( 0 = ShFileOperation(fos));

    end;