让程序一行一行的执行

blf 2000-08-29 10:05:00
想让下列程序先执行完第一条,在执行第二行.请给出原代码

winexec('C:\sqlany50\win32\dbbackup -c "uid=dba;pwd=sql;
dbf=D:\jyzdb.db" D:\ /y',1);
RenameFile('D:\jyzdb.db','D:\j01.db');
...全文
251 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kxy 2000-09-13
  • 打赏
  • 举报
回复
同意顶楼的楼下,顶楼的方法不好,建议不使用:)
zhouzq 2000-08-31
  • 打赏
  • 举报
回复
look
JGTM2000 2000-08-31
  • 打赏
  • 举报
回复
楼上所说极是。而楼上的楼上要记得在循环里面ProcessMessages和sleep,不然会吃掉无数CPU资源。
Michaelyfj 2000-08-29
  • 打赏
  • 举报
回复
lotto的方法也许是解决办法之一,但并不是理想的方法;
我提供一个过程参考,基本上能达到你的目的:
procedure execute(ln:Pchar;nShow:Integer);
var
StartInfo : TStartupInfo;
ProcInfo : TProcessInformation;
begin
GetStartupInfo(StartInfo);
StartInfo.dwFlags:=STARTF_USESHOWWINDOW;
StartInfo.wShowWindow := nShow; //窗口显示状态
if CreateProcess(nil, PChar(ln), nil, nil, false, 0, nil, nil, StartInfo, ProcInfo)=False then
raise Exception.Create('不能执行程序 ' + ln);
WaitForSingleObject(ProcInfo.hProcess, INFINITE); //等待程序执行完毕
end;

至于调用(very easy):
Execute('C:\sqlany50\win32\dbbackup -c "uid=dba;pwd=sql;
dbf=D:\jyzdb.db" D:\ /y',1);

lotto 2000-08-29
  • 打赏
  • 举报
回复
使用一个标志,在第一个命令执行之前,先做好标记,在两个语句之间增加循环语句,如果第一个命令没有执行完,就继续循环,否则跳出循环,继续执行下一条命令。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧