一 .OpenDialog 和 SaveDialog 如果在打开和保存时单击的是取消按钮...要如何让程序放弃以后的所有操作?好像可以用异常可不会写....
二.   ShellExecute(Handle, nil,PChar(ChangeFileExt(TextFilePath,'.bat')), nil, nil, SW_SHOW);
   sleep(5000);  //若不延时则无法进行备份
   deletefile(ChangeFileExt(TextFilePath,'.bat'));
   Application.MessageBox('操作成功','系统提示',MB_OK+MB_ICONINFORMATION);   这边是调用一个BAT文件执行InterBase 数据库的备份和还原的操作..由于数据库大小不一致,在执行CMD命令时需要的时间不确定,要怎么判断CMD已经执行完毕?否则会还在执行备份或还原操作时程序却提示操作已经完成.....
谢谢各位

解决方案 »

  1.   

    OpenDialog或SaveDialog的Execute方法会返回一个Boolean值, 这个值是False表示按了取消按钮
      

  2.   

    一般是这样调用的:
    if OpenDialog.Execute then
    begin
      //打开文件
    end;if SaveDialog.Execute then
    begin
      //保存文件
    end;
      

  3.   

    1)SaveDialog1.Execute 函数有返回值的,True就执行,你可以判断   if SaveDialog1.Execute then
         .....
      

  4.   

    1、if not OpenDialog1.Execute then Exit;2、
    var
      vProcessInfo: TProcessInformation;
      vStartUpInfo: TStartupInfo;
    begin
      FillChar(vStartUpInfo, SizeOf(vStartUpInfo), #0);
      vStartUpInfo.dwFlags := STARTF_USESHOWWINDOW;
      vStartUpInfo.wShowWindow := SW_HIDE;
      if CreateProcess(nil, PChar(ChangeFileExt(TextFilePath, '.bat')), nil, nil,
        False, IDLE_PRIORITY_CLASS, nil, nil, vStartUpInfo,
        vProcessInfo) then
      begin
        WaitForSingleObject(vProcessInfo.hProcess, INFINITE);
        CloseHandle(vProcessInfo.hThread);
        CloseHandle(vProcessInfo.hProcess);
      end;
    end;
      

  5.   

    我晕...想了老半天.加个 Else abort 就可以了...
    可是第二个问题要怎么办??
      

  6.   

    zswang(伴水清清)(专家门诊清洁工)   大哥...能解释一下程序么?看不懂-_-~~
      

  7.   

    执行这个批处理文件并得到进程信息
    CreateProcess(...)通过进程句柄等待该进程执行完毕
    WaitForSingleObject(vProcessInfo.hProcess, INFINITE);
    第二个参数表示等待的时间没啥好说的,自己查MSDN或搜吧
    在Windows下编程不查MSDN咋成
      

  8.   

    可是这些都不太懂是怎么回事:
      vProcessInfo: TProcessInformation;  //怎么在DELPHI中找不到这两个类?
      vStartUpInfo: TStartupInfo;
      FillChar(vStartUpInfo, SizeOf(vStartUpInfo), #0);
      vStartUpInfo.dwFlags := STARTF_USESHOWWINDOW;
      vStartUpInfo.wShowWindow := SW_HIDE;
      

  9.   

    这两个是结构,在Windows单元里