var
  flag: boolean; //升级标志{$R *.res}begin
  falg := false;  //自动升级
  if FileAge('\\abc\a.exe') > FileAge(ParamStr(0)) then
  begin
    if application.MessageBox('是否升级?', 'Upgrade Time!', 1) = 1 then
    begin
      falg := true;
      ... 升级过程略...
    end;
  end;  application.Initialize;
  try
    begin
      if flag then
        application.MessageBox('成功升级.', '提示', 1)
      else
        application.MessageBox('没有升级.', '提示', 1);

      frmLogin := TfrmLogin.Create(application);
      frmLogin.ShowModal;
      application.Run;
    end
  except
    ...
  end;end.为什么红色部分不执行?

解决方案 »

  1.   

    不执行? 不可能吧,除非你之前的代码部分出了异常,导致程序结束掉了,不然这个 if else  怎么会不执行呢?不知道你在升级的时候都干了什么。另外系统有定义好的见名知意的常量,你不用,非得用纯数值,看着不觉得别扭嘛?if FileAge('\\abc\a.exe') > FileAge(ParamStr(0)) then
      begin
        if application.MessageBox('是否升级?', 'Upgrade Time!', MB_YESNO + MB_ICONQUESTION1) = 1 MB_YES then
        begin
          falg := true;
          ... 升级过程略...
        end;
      end;
    -------
    下面至少会执行 else 部分的代码      if flag then
            application.MessageBox('成功升级.', '提示', 1)
          else
            application.MessageBox('没有升级.', '提示', 1);f8 单步跟一下吧