왜 디렉토리와 파일이 지워지지않죠.
고수님의 조언부탁드립니다.
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.
혹시 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.