Win98 에서 잘실행되던 프로그램이
Window XP에서 폴더명이 변경이 되지않아 문의드립니다.
간단한 첫번째 예를 들자면
procedure TForm1.Button1Click(Sender: TObject);
var
SearchRec : TSearchRec;
flag, i : Integer;
ccDirInf, ccDirSear, ccDirDel : String;
ExiFile : String;
DelFile : String;
ccOrgFile, ccNewFile: String;
begin
ccDirSear := 'c:old*.*';
flag := 0;
FindFirst( ccDirSear, faAnyFile, SearchRec );
WHILE flag = 0 DO Begin
flag := FindNext( SearchRec );
if flag = 0 then begin
DelFile := 'c:old' + SearchRec.Name;
DeleteFile( PChar(DelFile) );
end;
End;
ccOrgFile := 'c:old' ;
ccNewFile := 'c:new';
RenameFile( ccOrgFile, ccNewFile );
end;
간단한 소스의 설명을 하자면 old라는 폴더안의 파일들을 전부지우고
old라는 폴더를 new라는 폴더명으로 변경을 하고자하는 소스입니다.
그러나 이렇게하면 폴더명이 변경되지않습니다.
그러나 아래와 같이 하면 폴더변경은 됩니다.
procedure TForm1.Button1Click(Sender: TObject);
var
SearchRec : TSearchRec;
flag, i : Integer;
ccDirInf, ccDirSear, ccDirDel : String;
ExiFile : String;
DelFile : String;
ccOrgFile, ccNewFile: String;
begin
ccOrgFile := 'c:old' ;
ccNewFile := 'c:new';
RenameFile( ccOrgFile, ccNewFile );
ccDirSear := 'c:old*.*';
flag := 0;
FindFirst( ccDirSear, faAnyFile, SearchRec );
WHILE flag = 0 DO Begin
flag := FindNext( SearchRec );
if flag = 0 then begin
DelFile := 'c:old' + SearchRec.Name;
DeleteFile( PChar(DelFile) );
end;
End;
end;
첫번째예를 든것같이 old라는 폴더안의 파일들을 전부지우고
new라는 폴더로 폴더명을 변경하고자 합니다.
원인을 좀 부탁드리고 다른 방법이 있다면 다른 방법도 알려주셨으면 합니다.
고수님들의 조언 부탁바랍니다.
while문다음에 FindClose써서 파일핸들 닫고 해보세요...
^^ 항상 즐코하세요...