在应用中备份Paradox数据库,有什么好办法吗?(100分)

  • 主题发起人 主题发起人 nickname
  • 开始时间 开始时间
直接备份文件。
 
对,可以把文件复制到某一目录,好象不复杂,
也可以压缩(ARJ),或者自己写压缩程序(现成的)
 
如果想换名备份, 用batchmove
 
其实我是要问当我在程序中调用一个其他的应用时,比如在form中用arj
备份数据,在arj的窗口结束前,我不希望退出自己的主form,如何做?
 
现在的同志们都在忙些什么,唾手可得的100分的问题
居然没有人来光顾一下;太没面子了!
 
没人理我,真失败啊!
有另外一个问题,在WIN3.1用DELPHI 1.0开发ORACLE的程序
如果网络断掉了,系统死机或者出现一个大白框什么的,
任何避免或者自己先捕捉到错误.
 
在每次进行需要网络操作的时候(如从数据库中Select数据),都使用Try截获
错误不知道可不可以。
 
在每次进行需要网络操作的时候(如从数据库中Select数据),都使用Try截获
错误不知道可不可以。
 
<font color=red>
其实我是要问当我在程序中调用一个其他的应用时,
比如在form中用arj备份数据,在arj的窗口结束前,我不希望退出自己
的主form,如何做?
</font>
什么意思?
 
nickname,您可以用这个<a href=/delphi/attachments/Delzip11.zip>控件</a>,将数据库目录压缩成 zip 文件。
这个控件在主 Form 中能显示压缩进度。这样就不用在do
S 窗口中调用 arj 了。
 
要想禁止你的主Form被提前关闭, 可以在主Form的OnCloseQuery事件中加上一个判
断, 判别调用的外部程序是否完成. 如果完成, 将 CanClose 设置成true, 否则
为false. 怎样判别外部程序是否结束要根据你调用外部程序所使用的API函数而定.
既然提到 OnCloseQuery, 就多说几句. 如果在你主Form的OnCloseQuery中将
CanClose无条件的设置成True的话, 就没有人能够关掉你的程序了, Ctrl+Alt+Del
也不行, 除非关掉你的机器.
 
上面的回答有错误, 应该是 "将 CanClose 设置成 false".
怎样检查外部程序是否结束, 可以查找已大问题.
 
多人接受答案了。
 
要判断其他程序是否终止, 可以使用FinWindow. 如果您需要调用一个外部程序,
直到外部程序执行完才返回, 可以用下面的方法:
function WinExecAndWait32(FileName:String;
Visibility :
integer):integer;
var
zAppName:array[0..512] of char;
zCurDir:array[0..255] of char;
WorkDir:String;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
StrPCopy(zAppName,FileName);
GetDir(0,WorkDir);
StrPCopy(zCurDir,WorkDir);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if not CreateProcess(nil,
zAppName, { pointer to command line string }
nil, { pointer to process security
attributes }
nil, { pointer to thread security
attributes }
false, { handle inheritance flag }
CREATE_NEW_CONSOLE or { creation flags }
NORMAL_PRIORITY_CLASS,
nil, { pointer to new environment block }
nil, { pointer to current directory name }
StartupInfo, { pointer to STARTUPINFO }
ProcessInfo) then
Result := -1 { pointer to PROCESS_INF }
else
begin
WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,Result);
end;
end;

 
后退
顶部