안녕하십니까.
paradox DB를 이용하여 현업에 간단한 프로그래밍을 하고 있습니다.
그런데 요구 사항이 백업 버튼을 누루면 백업이 되고 복구 버튼을
누르면 복구가 되도록 해달라고 하네요.
테이블은 3개 인데요.
저의 구상은 백업 버튼을 누르면 디스켓(1.44)에 백업되고
복구 버튼을 누르면 특정 디렉토리에 복구가 되도록 할려고
하는데 누가 이와 같은 프로그램을 짠 도사님들 계신지요.
그리고 백업을 하더라도 디스켓에 나누어 저장되도록 해야 되는데.
어이 좋은 방법이 없는지.
혹시 아시는 분 좀 부탁드리요.
질문이 좀 어렵죠..
> 안녕하십니까.
> paradox DB를 이용하여 현업에 간단한 프로그래밍을 하고 있습니다.
> 그런데 요구 사항이 백업 버튼을 누루면 백업이 되고 복구 버튼을
> 누르면 복구가 되도록 해달라고 하네요.
> 테이블은 3개 인데요.
> 저의 구상은 백업 버튼을 누르면 디스켓(1.44)에 백업되고
> 복구 버튼을 누르면 특정 디렉토리에 복구가 되도록 할려고
> 하는데 누가 이와 같은 프로그램을 짠 도사님들 계신지요.
> 그리고 백업을 하더라도 디스켓에 나누어 저장되도록 해야 되는데.
> 어이 좋은 방법이 없는지.
> 혹시 아시는 분 좀 부탁드리요.
> 질문이 좀 어렵죠..
백업할때 압축을 하는게 좋을겁니다..
전 Delzip1.5를 이용해서 백업과 복원을 했거든요...
여기자료실에 Delzip은 있습니다..
아래 제가 개발한것중 일부입니다....이건 하드로 백업하고
하드에서 복원하는 루틴입니다.
잘 응용하면 원하시는 기능은 쉽게 구현할수 있을겁니다...
----백업
procedure TmainFrm.ToolButton3Click(Sender: TObject);
begin
BackFrm.Show;
BackFrm.Caption := '데이타 백업';
BackFrm.Label1.Caption := '데이타 백업 진행중......';
BackFrm.Animate1.Active := True;
//백업할 디렉토리가 존재하지 않으면
if NOT DirectoryExists('C:Program FilesCarBackUp') then
MKDir('C:Program FilesCarBackUp');//디렉토리 생성
//백업한 날짜를 파일이름으로...
ZipMaster1.ZipFilename := 'C:Program FilesCarBackUpcar'+DateToStr(Date)+'.zip';
ZipMaster1.FSpecArgs.Clear;
ZipMaster1.FSpecArgs.Add('C:Program FilesNetbase안전자동차전문학원dataCar.mdb');
ZipMaster1.Add;
BackFrm.Animate1.Active := False;
ShowMessage('데이타 백업이 끝났습니다!');
BackFrm.Close;
ZipMaster1.Unload_Zip_Dll;
Enable(Sender);
end;
-----복원
procedure TmainFrm.ToolButton4Click(Sender: TObject);
var
nLength, i ,j : integer;
begin
if OpenDialog1.Execute then begin
ZipMaster1.ZipFilename := OpenDialog1.FileName;
ZipMaster1.ExtrBaseDir := 'C:Program FilesNetbase안전자동차전문학원data';
nLength := Length(ZipMaster1.ZipFilename);
For i := 1 To nLength Do Begin
If ZipMaster1.ZipFilename[i] = '' Then
j := i;
end;
if MessageDlg(Copy(ZipMaster1.ZipFilename,j+4,10)+' 일자 데이타를 복원하시겠습니까?'+#13#13+
'#주의 : 복원작업은 취소할수 없습니다!!',mtWarning, [mbYes, mbNo], 0) = mrYes then begin
BackFrm.Show;
BackFrm.Caption := '데이타 복원';
BackFrm.Label1.Caption := '데이타 복원중......';
BackFrm.Animate1.Active := True;
ZipMaster1.ExtrOptions := [ExtrOverWrite];
ZipMaster1.Extract;
BackFrm.Animate1.Active := False;
ShowMessage('데이타 복원이 끝났습니다!');
BackFrm.Close;
Enable(sender);
End;
end;
end;
--zipmaster컴포넌트의 OnProgress이벤트..
procedure TmainFrm.ZipMaster1Progress(Sender: TObject;
ProgrType: ProgressType; Filename: String; FileSize: Integer);
var
Step : Integer;
begin
case ProgrType of
TotalSize2Process:
begin
with BackFrm.ProgressBar1 do
begin
Max := 10001;
Position := 1;
Step := 100;
end;
TotalSize1 := FileSize;
TotalProgress1 := 0;
end;
TotalFiles2Process:
begin
end;
NewFile:
begin
end;
ProgressUpdate:
begin
TotalProgress1 := TotalProgress1 + FileSize;
if TotalSize1 <> 0 then
begin
Step := Integer( Int64(TotalProgress1) * Int64(10000) div Int64(TotalSize1) );
try
Step := Round( TotalProgress1 * 10000 / TotalSize1 );
except
Step := 2147483647;
end;
BackFrm.ProgressBar1.Position := 1 + Step;
end
else
BackFrm.ProgressBar1.Position := 10001;
end;
EndOfBatch:
begin
end;
end;
Application.ProcessMessages;
end;
참고로 BackFrm의 디자인은 Animate,ProgressBar,Label을
올려놓고 하시면 됩니다...
도움이