음냐리. 다들 조은 팁을 올려주시는 군여.
근데 어쩌져? 전 기본 델파이 사용법으로만 코딩을 해서 특이하게 올릴게 없네여.
아래는 제가 쓰는 디렉토리 삭제, 이동 함수 임다. 아이 부끄러.. 후다닥~~
// 두개의 상위가 같으면 디렉토리명 바꾸기이며, 틀리면 이동이 된다.
function OKRenMovDir(AOldPath, ANewPath: string): boolean;
begin
Result := False;
if MoveFile(PChar(AOldPath), PChar(ANewPath)) then
begin
// 원도우즈 탐색기에 알려서 디렉토리변경을 탐색기에 반영시킨다
SHChangeNotify(SHCNE_RENAMEFOLDER, SHCNF_PATH, PChar(AOldPath), pChar(ANewPath));
Result := True;
end;
end;
// 디렉토리 삭제 함수
function OKDelDir(APath: string): boolean;
begin
Result := False;
if DeleteFile(PChar(APath)) then
begin
// 원도우즈 탐색기에 알려서 디렉토리변경을 탐색기에 반영시킨다
SHChangeNotify(SHCNE_DELETE, SHCNF_PATH, PChar(APath), pChar(APath));
Result := True;
end;
end;
저두 팁에서 찾은건데염.....
OKRenMovDir함수는 디렉토리를 잘라내서 이동하는거 같구염...
원본폴더를 그대로 놔눈상태에서 다른 폴더로 복사하는 방법은 아래 프로시저로 해보세염...
테스트 해봤는데 잘 되네염...
즐프염......
Procedure TMain.DirectoryCopy(Sourcedir :string; Destdir: string);
var
Pstr : array[0..256] of char; //널 종료 문자열로 바꾸기 위한 저정하기 위한 변수
Pstr2 : array[0..256] of char;
str : string[255]; //경로를 조립하기 위한 임시 문자열
str2 : string[255];
SearchRec : TsearchRec; //소스디렉토리를 검색하고자 할때 쓰이는 레코드(파스칼 구조체입니다)
Result : integer; //찾았는지 못 찾았는지 여부
begin
str := Sourcedir + '*.*';
findfirst(str, faanyfile, SearchRec); //소스폴더를 검색한다.
Result := 0; //검색결과 여부의 초기화
While Result = 0 do //다음 화일을 찾아 루프를 반복
begin
if (SearchRec.name = '.') or (SearchRec.name = '..') then
begin //폴더가 자기자신이거나 상위폴더일 경우
Result := findnext(SearchRec); //검색 결과 화일을 찾으면 1이다.)
continue;
end;
if SearchRec.attr = fadirectory then //발견한 대상이 디렉토리이면
begin
str := Sourcedir + '' + SearchRec.name; //소스디렉토리 와 발견한 디렉토리를 더한다.
str2 := Destdir + '' + SearchRec.name; //타켓디렉토리 와 발견한 디렉토리를 더해준다.
//한번만들고 나면 계속만들필요가 없다....
Mkdir(str2); //타켓디렉토리를 생성한다.
DirectoryCopy(str, str2); //디렉토리 이므로 여기서 자기자신을 재귀호출한다.
Result := findnext(SearchRec); //결과를 돌려준다.
continue;
end;
//아래는 찾은것이 화일일 경우 복사를 하는 부분이다.
//완전 경로명으로 조립해 주어야 한다.
str := Sourcedir + '' + SearchRec.name;
str2 := Destdir + '' + SearchRec.name;
StrPcopy(pstr, str);
StrPcopy(pstr2, str2);
copyfile(pstr, pstr2, false);
//이것은 API함수이다. Parameter는
//copyfile(소스화일명, 데스트화일명, 플래그) 마지막 인자인 플래그는 false 일경우 화일이 존재할때 덮어쓴다.)
Result := findnext(SearchRec); //검색여부
end; //While 문의 끝
end;
도움이 될지 모르겠네여...
안녕하세여. 타락임다.
음냐리. 다들 조은 팁을 올려주시는 군여.
근데 어쩌져? 전 기본 델파이 사용법으로만 코딩을 해서 특이하게 올릴게 없네여.
아래는 제가 쓰는 디렉토리 삭제, 이동 함수 임다. 아이 부끄러.. 후다닥~~
// 두개의 상위가 같으면 디렉토리명 바꾸기이며, 틀리면 이동이 된다.
function OKRenMovDir(AOldPath, ANewPath: string): boolean;
begin
Result := False;
if MoveFile(PChar(AOldPath), PChar(ANewPath)) then
begin
// 원도우즈 탐색기에 알려서 디렉토리변경을 탐색기에 반영시킨다
SHChangeNotify(SHCNE_RENAMEFOLDER, SHCNF_PATH, PChar(AOldPath), pChar(ANewPath));
Result := True;
end;
end;
// 디렉토리 삭제 함수
function OKDelDir(APath: string): boolean;
begin
Result := False;
if DeleteFile(PChar(APath)) then
begin
// 원도우즈 탐색기에 알려서 디렉토리변경을 탐색기에 반영시킨다
SHChangeNotify(SHCNE_DELETE, SHCNF_PATH, PChar(APath), pChar(APath));
Result := True;
end;
end;