백업 디렉토리를 만들고 데이타를 전부 복사하는 루틴입니다.
파일을 하나씩 복사할 때는 문제가 엄는데, 한꺼번에 복사 하려니까,
중간에 멈추네여...ㅠ,ㅠ
고수님들의 조언 부탁 드립니다.
procedure TSalaryMainForm.BitBtn4Click(Sender: TObject);
var
sr: TSearchRec;
begin
dmSalary.Destroy;
CreateDir(DateToStr(Now));
if FindFirst('d:급여관리Data*.*', faAnyFile, sr) = 0 then
begin
while FindNext(sr) = 0 do
begin
if sr.Size > 0 then
begin
if not CopyFile(sr.Name,'d:급여관리'+DateToStr(Now)+''+sr.Name) then
break;
end;
end;
FindClose(sr);
end;
dmSalary := TdmSalary.Create(self);
end;
Function TSalaryMainForm.CopyFile(FromFile,ToFile:String): Boolean;
Var
FromF, ToF: file;
{$IFDEF WIN32}
NumRead, NumWritten: Integer;
{$ELSE}
NumRead, NumWritten: Word;
{$ENDIF}
Buf: array[1..2048] of Char;
Begin
AssignFile(FromF, FromFile);
AssignFile(ToF, ToFile);
Try
FileMode := 0; {Sets Reset To ReadOnly}
Reset(FromF, 1);{ Record size = 1 }
FileMode := 2; {Sets Reset To ReadWrite}
Rewrite(ToF, 1);{ Record size = 1 }
repeat
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
BlockWrite(ToF, Buf, NumRead, NumWritten);
until (NumRead = 0) or (NumWritten <> NumRead);
System.CloseFile(FromF);
System.CloseFile(ToF);
Result := True;
Except
On EInOutError Do
Begin
Result := False;
End;
Else Result := False;
End;
If Result = False Then
MessageDlg('다음 화일을 복사하는 중에 문제가 발생하였습니다 !! '+FromFile,
mtWarning, [mbOk], 0);
End;
> 백업 디렉토리를 만들고 데이타를 전부 복사하는 루틴입니다.
> 파일을 하나씩 복사할 때는 문제가 엄는데, 한꺼번에 복사 하려니까,
> 중간에 멈추네여...ㅠ,ㅠ
> 고수님들의 조언 부탁 드립니다.
>
> procedure TSalaryMainForm.BitBtn4Click(Sender: TObject);
> var
> sr: TSearchRec;
> begin
> dmSalary.Destroy;
> CreateDir(DateToStr(Now));
> if FindFirst('d:급여관리Data*.*', faAnyFile, sr) = 0 then
> begin
> while FindNext(sr) = 0 do
> begin
> if sr.Size > 0 then
> begin
> if not CopyFile(sr.Name,'d:급여관리'+DateToStr(Now)+''+sr.Name) then
> break;
> end;
> end;
> FindClose(sr);
> end;
> dmSalary := TdmSalary.Create(self);
> end;
>
> Function TSalaryMainForm.CopyFile(FromFile,ToFile:String): Boolean;
> Var
> FromF, ToF: file;
> {$IFDEF WIN32}
> NumRead, NumWritten: Integer;
> {$ELSE}
> NumRead, NumWritten: Word;
> {$ENDIF}
> Buf: array[1..2048] of Char;
> Begin
> AssignFile(FromF, FromFile);
> AssignFile(ToF, ToFile);
> Try
> FileMode := 0; {Sets Reset To ReadOnly}
> Reset(FromF, 1);{ Record size = 1 }
> FileMode := 2; {Sets Reset To ReadWrite}
> Rewrite(ToF, 1);{ Record size = 1 }
> repeat
> BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
> BlockWrite(ToF, Buf, NumRead, NumWritten);
> until (NumRead = 0) or (NumWritten <> NumRead);
> System.CloseFile(FromF);
> System.CloseFile(ToF);
> Result := True;
> Except
> On EInOutError Do
> Begin
> Result := False;
> End;
> Else Result := False;
> End;
> If Result = False Then
> MessageDlg('다음 화일을 복사하는 중에 문제가 발생하였습니다 !! '+FromFile,
> mtWarning, [mbOk], 0);
> End;
/////////////////////////////////////////////////////////////
단순 파일을 복사식 백업이라면
CopyFile(PChar(file_name), PChar(file_name2), False);쓰면안되나요.
또 폴더생성은 있는지 검사후에 한번만생성하면 될것 같은데요.
if DirectoryExists(NEW_DIR)=False then
ForceDirectories(NEW_DIR);