請問如何備份Paradox數據庫,庫中的table 動態生成(200分)

  • 主题发起人 主题发起人 livesource
  • 开始时间 开始时间
L

livesource

Unregistered / Unconfirmed
GUEST, unregistred user!
1.請問如何備份Paradox數據庫,庫中的table 很多,都是動態生成,(100分)

2.Delphi中有沒有Xcopy 類的函數,實現對整個文件夾的copy.(100分)

 
1. this is the code I made before for an old application:

procedure TfrmBackup.tblInput_PATHValidate(Sender: TField);
begin
if tblInput_PATH.Value = '' then Exit;
if not DirectoryExists(tblInput_PATH.Value) then
raise Exception.Create('Directory does not exist.');
end;

procedure TfrmBackup.bbnOKClick(Sender: TObject);
var
sTables : TStringList;
i : integer;
sCurrentPath : string;
begin
sCurrentPath := sGetDBPath(frmumenu.DBEWS);
try
sTables := TStringList.Create;

if tblInput_DATABASE.Value = '' then
begin
AFDMessageDlg('DataSet name must be entered.', mtError, [mbOK], 0);
dbeDatabase.SetFocus;
Exit;
end;
if tblInput_PATH.Value = '' then
begin
AFDMessageDlg('Path must be entered.', mtError, [mbOK], 0);
dbePath.SetFocus;
Exit;
end;

Session.AddStandardAlias(Uppercase(tblInput_DATABASE.Value), tblInput_PATH.Value, 'DBASE');
Session.SaveConfigFile;
Session.GetTableNames(frmuMenu.DBEWS.DatabaseName, '*.dbf', False, False, sTables);
ShowWorking('Backup Files', sTables.Count);
for i := 0 to sTables.Count - 1 do
begin
CopyFile(PChar(sCurrentPath + sTables + '.dbf'), PChar(tblInput_PATH.Value + '/' + sTables + '.dbf'), False);

CopyFile(PChar(sCurrentPath + sTables + '.mdx'), PChar(tblInput_PATH.Value + '/' + sTables + '.mdx'), False);

UpdateWorking(i+1);
end;
finally
sTables.Free;
WorkingEnd;
end;
Close;
end;

2. use 'findfirst' and 'findnext' or copyfolder(ISAPI)
 
---- 1、拷贝目录

---- 为了能拷贝目录下带有子目录的情况,先定义一个辅助的拷贝函数,它是递归执行的,直到把目录下的所有文件和子目录都拷贝完。

---- 1.1拷贝目录的递归辅助函数:DoCopyDir

function DoCopyDir(sDirName:String;
sToDirName:String):Boolean;
var
hFindFile:Cardinal;
t,tfile:String;
sCurDir:String[255];
FindFileData:WIN32_FIND_DATA;
begin
//先保存当前目录
sCurDir:=GetCurrentDir;
ChDir(sDirName);
hFindFile:=FindFirstFile('*.*',FindFileData);
if hFindFile< >INVALID_HANDLE_VALUE then
begin
if not DirectoryExists(sToDirName) then
ForceDirectories(sToDirName);
repeat
tfile:=FindFileData.cFileName;
if (tfile='.') or (tfile='..') then
Continue;
if FindFileData.dwFileAttributes=
FILE_ATTRIBUTE_DIRECTORY then
begin
t:=sToDirName+'/'+tfile;
if not DirectoryExists(t) then
ForceDirectories(t);
if sDirName[Length(sDirName)]< >'/' then
DoCopyDir(sDirName+'/'+tfile,t)
else
DoCopyDir(sDirName+tfile,sToDirName+tfile);
end
else
begin
t:=sToDirName+'/'+tFile;
CopyFile(PChar(tfile),PChar(t),True);
end;
until FindNextFile(hFindFile,FindFileData)=false;
FindClose(hFindFile);
end
else
begin
ChDir(sCurDir);
result:=false;
exit;
end;
//回到原来的目录下
ChDir(sCurDir);
result:=true;
end;

---- 1.2拷贝目录的函数:CopyDir

function CopyDir(sDirName:String;
sToDirName:string):Boolean;
begin
if Length(sDirName)< =0 then
exit;
//拷贝...
Result:=DoCopyDir(sDirName,sToDirName);
end;
 
问题1:
利用Tbatch组件
 
用TBatch或直接拷贝文件
 
Redhat2000:
我找不到
copyfolder(ISAPI)函數
copyfile 是有的,但我的文件是動態生成的,文件數也不定呀


請問張劍波;
DirectoryExists()
ForceDirectories();兩個函數的出處?

htw
Tbatchmove 只能表對表的複製,我的表很多的,而且是在運行中生成的

請大家繼續幫忙呀!!!!
 
"請問張劍波;DirectoryExists() ForceDirectories();兩個函數的出處?"
Unit FileCtrl
delphi help
=========================
如何在DELPHI中实现普通文件的拷贝?
procedure TForm1.btnCopyClick(Sender: TObject);
var
sfile,dfile : String;
begin
sfile :='a.txt';//被copy的文件
dfile :='b.txt';//copy后的文件名
CopyFile(pchar(sfile),pchar(dfile),false);
第三个参数false为如果b.txt已经存在,则覆盖;如果为true,则不进行操作
函数详细信息查阅help文件
______________________________
同样适用于DB的COPY




 
多人接受答案了。
 
后退
顶部