procedure Tmain.DeleteUserClick(Sender: TObject);
begin if  MessageDlg('确认要删除吗?',mtWarning,[mbYes,mbNo],0)=mrYes then
    begin
   //开启一个事务
    try
    DataBase1.StartTransaction;
    Query1.SQL.Clear;
    Query1.sql.Add('delete from User where ID=:uid');
    Query1.ParamByName('uid').AsInteger:=Log.UserID;
    Query1.ExecSQL;
    Query1.SQL.Clear;
    Query1.SQL.Add('delete from SiteInfo where UserId=:uid');
    Query1.ParamByName('uid').AsInteger:=Log.UserID;
    Query1.ExecSQL;
    DataBase1.Commit;
    showmessage('删除成功!');
    Except
    begin
     DataBase1.Rollback;
     ShowMessage('删除失败!');
    end;
    end
 //取消删除
    else close;end;系统老是有“END expected BUT else FOUNd”
try ...except 的用法不是很清楚高手看一下错在那?

解决方案 »

  1.   

    procedure Tmain.DeleteUserClick(Sender: TObject);
    begin  if  MessageDlg('确认要删除吗?',mtWarning,[mbYes,mbNo],0)=mrYes then
      begin
      //开启一个事务
        try
          DataBase1.StartTransaction;
          Query1.SQL.Clear;
          Query1.sql.Add('delete from User where ID=:uid');
          Query1.ParamByName('uid').AsInteger:=Log.UserID;
          Query1.ExecSQL;
          Query1.SQL.Clear;
          Query1.SQL.Add('delete from SiteInfo where UserId=:uid');
          Query1.ParamByName('uid').AsInteger:=Log.UserID;
          Query1.ExecSQL;
          DataBase1.Commit;
          showmessage('删除成功!');
        Except
          begin
           DataBase1.Rollback;
           ShowMessage('删除失败!');
          end;
        end;
      end//这里缺少一个
    //取消删除
        else close;end; 
      

  2.   


    配对出错
    procedure Tmain.DeleteUserClick(Sender: TObject);
    begin
    if  MessageDlg('确认要删除吗?',mtWarning,[mbYes,mbNo],0)=mrYes then
    begin
      //开启一个事务
        try
          DataBase1.StartTransaction;
          Query1.SQL.Clear;
          Query1.sql.Add('delete from User where ID=:uid');
          Query1.ParamByName('uid').AsInteger:=Log.UserID;
          Query1.ExecSQL;
          Query1.SQL.Clear;
          Query1.SQL.Add('delete from SiteInfo where UserId=:uid');
          Query1.ParamByName('uid').AsInteger:=Log.UserID;
          Query1.ExecSQL;
          DataBase1.Commit;
          showmessage('删除成功!');
        Except
          DataBase1.Rollback;
          ShowMessage('删除失败!');
        end;
    end
    //取消删除
    else
      close;
    end;
      

  3.   

        Except 
               ----------此处 begin 去掉
        DataBase1.Rollback; 
        ShowMessage('删除失败!'); 
        end; 
      

  4.   

    问题解决了!谢谢各位大侠!
    if....else  的begin  end  我是明白,但try  .. except 的就不是很清楚
      

  5.   

    try
    .....
    except
    .....
    end;
      

  6.   

    我的习惯if {condition} then
    begin
      try
        //....
      except
        begin
          //.... catch exception
        end;
      end;
    end
    else
    begin
      //...
    end;
      

  7.   


    try
      //....
    except
      begin    //这里的begin...end, 多余了
        //.... catch exception
      end;     //这里的begin...end, 多余了
    end;
      

  8.   


    建议还是加上比较好 因为以下代码会编译不通过 ("END" Expected but ...)try 
      //.... 
    except on e:Exception do
      begin        
        //.... catch exception 
        //code line 1
        //code line 2
        .....
      end;    
    end;
      

  9.   

    刚写错了try 
      //.... 
    except on e:Exception do
      //begin        
        //.... catch exception 
        //code line 1
        //code line 2
        .....
      //end;    
    end;这样会编译出错
      

  10.   

    这里的begin...end是on e:Exception do后面的复合语句, 不是except的缩进格式换成这样写比较清楚:try 
      //.... 
    except 
      on e:Exception do
      begin        
        //.... catch exception 
        //code line 1
        //code line 2
        .....
      end;    
    end;
      

  11.   

    try
    except
    end;//是少end了吧。
      

  12.   

        ShowMessage('删除失败!'); 
        end; 
        end;///here!!!!!!!!!!
        end 
    //取消删除 
        else close;