Q&A

  • 파일 삭제 문의
WinXP에서 프로그램자체에서 도스 명령프롬프트의 폴더안의 파일들을 삭제할려고 합니다

if FileExists('c:\aaa\*.') then
begin
   messagedlg('c:\aaa폴더안의 임시파일 삭제!!!', mtWarning,[mbok],0);
   DeleteFile('c:\aaa\*.*');
end;

머가 잘못되었는지 고수분들의 답변 부탁드립니다...ㅜㅜ
3  COMMENTS
  • Profile
    마이크로김 2005.11.03 01:23

    저는 갠적으로 함수 만들어 사용하고 있는데요....

    {******************************************************************************
    기능   : 파일삭제함수
    input  : 디렉토리,삭제 할 파일
    output :
    example: file_Delete('c:\Temp\','*.txt');
    ******************************************************************************}
    procedure file_Delete(cS_Path,cS_File:String);
    Var
            SearchRec : TSearchRec;
    begin

            if cS_Path[Length(cS_Path)] <> '\' then
                    cS_Path := cS_Path + '\';

            if Not DirectoryExists(cS_Path) then Exit;

            if (FindFirst(cS_Path+cS_File,faAnyFile,SearchRec) = 0) then
            begin
                    try
                            DeleteFile(cS_Path+SearchRec.Name);
                            While (FindNext(SearchRec) = 0) do
                                    DeleteFile(cS_Path+SearchRec.Name);

                     finally
                            // 파일 스트림 닫는다
                            FindClose(SearchRec);
                    end;
            end;
    end;

  • Profile
    parch 2005.10.29 18:33
    디렉토리 삭제하기

    <!--CodeS-->
    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;

    EXAMPLE : DeleteFiles ('c:temp', '*.txt', True);
    <!--CodeE-->

    C:temp 안에 txt 파일은 모두 지워 집니다.
  • Profile
    김규섭 2005.10.31 19:39
    우선 답변 해 주셔서 감사합니다....

    아직 허접한지라..궁금한게 있어서요

    procedure DeleteFiles (const Path, Mask : string; recursive : boolean);  <-- 이거는 어디서 선언하나요??

    그리고 만약 private에서 선언한다면 Uses에 필요한게 따로 있는지요...

    전 그냥 버튼 클릭으로 했었는데...