Q&A

  • 디렉토리와 파일이 지워지지 않네요.
왜 디렉토리와 파일이 지워지지않죠.

고수님의 조언부탁드립니다.



procedure TForm1.FormCreate(Sender: TObject);

var

sfile : TStringlist;

sTmp : String;

begin

index := 0;



if not directoryexists('c:imsi') then

createdir('c:imsi');



sfile := TStringlist.Create;



//ftp down load 생략



end;



Function TForm1.deletefile(DirName : string): Boolean;

var

SHFileOpStruct : TSHFileOpStruct;

DirBuf : array [0..255] of char;

begin

try

Fillchar(SHFileOpStruct,Sizeof(SHFileOpStruct),0);

FillChar(DirBuf, Sizeof(DirBuf), 0 );

StrPCopy(DirBuf, DirName);

with SHFileOpStruct do begin

Wnd := 0;

pFrom := @DirBuf;

wFunc := FO_DELETE;

fFlags := FOF_ALLOWUNDO;

fFlags := fFlags or FOF_NOCONFIRMATION;

fFlags := fFlags or FOF_SILENT;

end;

Result := (SHFileOperation(SHFileOpStruct) = 0);

except

Result := False;

end;

end;



procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

deletefile('c:imsi');

end;





end.

1  COMMENTS
  • Profile
    kylix 2001.02.16 05:27
    잘 지워지는데요...



    혹시 c:imsi에 있는 파일들중에서 메모리에 올려진 dll파일이나 현재 실행중인 파일



    (.exe)이 있는것은 아닌지... 그런것들은 메모리에서 내려와야지 파일을 지울수 있는



    것이니까 한번확인해보세요...



    제가 직접해봤는데 잘 작동하는군요. 코드는 이상이 없네요...





    geewoo wrote:

    > 왜 디렉토리와 파일이 지워지지않죠.

    > 고수님의 조언부탁드립니다.

    >

    > procedure TForm1.FormCreate(Sender: TObject);

    > var

    > sfile : TStringlist;

    > sTmp : String;

    > begin

    > index := 0;

    >

    > if not directoryexists('c:imsi') then

    > createdir('c:imsi');

    >

    > sfile := TStringlist.Create;

    >

    > //ftp down load 생략

    >

    > end;

    >

    > Function TForm1.deletefile(DirName : string): Boolean;

    > var

    > SHFileOpStruct : TSHFileOpStruct;

    > DirBuf : array [0..255] of char;

    > begin

    > try

    > Fillchar(SHFileOpStruct,Sizeof(SHFileOpStruct),0);

    > FillChar(DirBuf, Sizeof(DirBuf), 0 );

    > StrPCopy(DirBuf, DirName);

    > with SHFileOpStruct do begin

    > Wnd := 0;

    > pFrom := @DirBuf;

    > wFunc := FO_DELETE;

    > fFlags := FOF_ALLOWUNDO;

    > fFlags := fFlags or FOF_NOCONFIRMATION;

    > fFlags := fFlags or FOF_SILENT;

    > end;

    > Result := (SHFileOperation(SHFileOpStruct) = 0);

    > except

    > Result := False;

    > end;

    > end;

    >

    > procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

    > begin

    > deletefile('c:imsi');

    > end;

    >

    >

    > end.