<!--CodeS-->
if ckdir.checked then
begin
for i := 0 to od2.Files.count do
begin
try
// filename := tdr + extractfilename(od2.files.Strings[i]);
// assignfile(myfile, filename);
movefile(PChar(tdrfile), Pchar(sdrfile)); //파일이동
except
continue;
end;
end;
try
od2.Destroy;
except
showmessage('od2.destroy false');
end;
removedirectory(PChar(tdr));
if IOResult <> 0 then
begin
MessageDlg('Cannot remove directory', mtWarning, [mbOk], 0);
end
else
begin
MessageDlg('Directory removed', mtInformation, [mbOk], 0);
end;
end;
<!--CodeE-->
tdr은
if od2.execute then begin
tdr := ExtractFileDir(od2.filename);
end;
입니다.
폴더삭제 가..죽어도 안돼요.ㅠ.ㅠ
removedirectory('c:\aa'); 라고하면 되는데..
저렇게 string 에.. 들어있는 경로를 pchar로 해서 하니 불가네요
rmdir(tdr)해도 불가고..ㅠ.ㅠ
폴더삭제법 알려주세요..
//-----------------------------------------------
a폴더와 b폴더 를 비교해서
a폴더에 있는 파일들이 b폴더에 있으면 삭제하고
b폴더에 있는 남아있는 파일들을 a폴더로 복사하고
b폴더를 삭제할려고 하는데.. 힘드네요 ㅠ.ㅠ
function DirectoryCopy(Sourcedir :string; Destdir: string) : Boolean;
var
Pstr : array[0..256] of char; //널 종료 문자열로 바꾸기 위한 저정하기 위한 변수
Pstr2 : array[0..256] of char;
str : string[255]; //경로를 조립하기 위한 임시 문자열
str2 : string[255];
SearchRec : TsearchRec; //소스디렉토리를 검색하고자 할때 쓰이는 레코드(파스칼 구조체입니다)
nResult : integer; //찾았는지 못 찾았는지 여부
i, j : integer;
begin
Result := True;
try
if Sourcedir[Length(Sourcedir)] <> '\' then Sourcedir := Sourcedir + '\';
if Destdir[Length(Destdir)] <> '\' then Destdir := Destdir + '\';
str := Sourcedir + '*.*';
FindFirst(str, faanyfile, SearchRec); //소스폴더를 검색한다.
nResult := 0; //검색결과 여부의 초기화
While nResult = 0 do //다음 화일을 찾아 루프를 반복
begin
inc(j);
if (SearchRec.name = '.') or (SearchRec.name = '..') then
begin //폴더가 자기자신이거나 상위폴더일 경우
nResult := FindNext(SearchRec); //검색 결과 화일을 찾으면 1이다.)
continue;
end;
if SearchRec.attr = fadirectory then //발견한 대상이 디렉토리이면
begin
str := Sourcedir + SearchRec.name; //소스디렉토리 와 발견한 디렉토리를 더한다.
str2 := Destdir + SearchRec.name; //타켓디렉토리 와 발견한 디렉토리를 더해준다.
//한번만들고 나면 계속만들필요가 없다....
try
Mkdir(str2); //타켓디렉토리를 생성한다.
except
end;
DirectoryCopy(str, str2); //디렉토리 이므로 여기서 자기자신을 재귀호출한다.
nResult := FindNext(SearchRec); //결과를 돌려준다.
Continue;
end;
//아래는 찾은것이 화일일 경우 복사를 하는 부분이다.
//완전 경로명으로 조립해 주어야 한다.
str := Sourcedir + SearchRec.name;
str2 := Destdir + SearchRec.name;
StrPcopy(pstr, str);
StrPcopy(pstr2, str2);
//이것은 API함수이다. Parameter는
CopyFile( pstr, pstr2, False );
DeleteFile( pstr );
nResult := findnext(SearchRec); //검색여부
end; //While 문의 끝
except
Result := False;
end;
end;
<!--CodeE-->