首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

,delphi中if else

2013-06-25 
求助,delphi中if else刚学delphi,一直用不好delphi中的if else,写了函数,其中需要判断的地方挺多,大家帮忙

求助,delphi中if else
刚学delphi,一直用不好delphi中的if else,写了函数,其中需要判断的地方挺多,大家帮忙改下,TKS(看了相关if else文章,还是不会用),TKS

function gfsofutr(p_isse_no,p_isse_rev,p_bukamei_j: string) : string;
var
 p_sofu_no : string;
 p_blean :boolean;
begin
  with DM.QR_PGSOFUTR_040  do
  begin
     close;
     ParamByName('ISSE_NO').AsString := p_isse_no;
     ParamByName('ISSE_REV').AsString := p_isse_rev;
     Open;
     IF NOT EOF THEN
        p_blean := false;
        while not eof do  BEGIN
          if  FieldByName('BUKAMEI_J').Asstring = p_bukamei_j THEN
              p_sofu_no := FieldByName('SOFU_NO').Asstring ;
              p_blean := true;
              break;   //退出循环
        NEXT;
        End;
       if  p_blean = false then
           with DM.QR_PGSOFUTR_040  do
           begin
              close;
              ParamByName('ISSE_NO').AsString := p_isse_no;
              ParamByName('ISSE_REV').AsString := p_isse_rev;
              Open;
              if strtoint(FieldByName('SOFU_NO').Asstring) < 10 then
              p_sofu_no := '0' + inttostr(strtoint(FieldByName('SOFU_NO').Asstring) + 1 );
              else
              p_sofu_no := inttostr(strtoint(FieldByName('SOFU_NO').Asstring) + 1 );

              p_blean := true;
              close;
           end;
     else  //和上面if not eof 对应的
     p_sofu_no := '01' ;

  end;
  Result := p_sofu_no;
end;
delphi if?else


[解决办法]
then或else后面如果只有一个语句,就不用begin...end来包括,如果你搞不清,就不管一个语句还是多个语句,全用begin...end来包起来

if [条件] then
begin
...
end  //注意,这里后跟else,所以不能加;号
else
begin
...
end;

你的代码整理下,就是这样:


function gfsofutr(p_isse_no,p_isse_rev,p_bukamei_j: string) : string;
var
 p_sofu_no : string;
 p_blean :boolean;
begin
  with DM.QR_PGSOFUTR_040  do
  begin
    close;
    ParamByName('ISSE_NO').AsString := p_isse_no;
    ParamByName('ISSE_REV').AsString := p_isse_rev;
    Open;
    IF NOT EOF THEN
      p_blean := false;
    while not eof do
    BEGIN
      if  FieldByName('BUKAMEI_J').Asstring = p_bukamei_j THEN
          p_sofu_no := FieldByName('SOFU_NO').Asstring ;
      p_blean := true;
      break;   //退出循环
      NEXT;
    End;
    if  p_blean = false then
      with DM.QR_PGSOFUTR_040  do
      begin
        close;
        ParamByName('ISSE_NO').AsString := p_isse_no;
        ParamByName('ISSE_REV').AsString := p_isse_rev;
        Open;
        if strtoint(FieldByName('SOFU_NO').Asstring) < 10 then
        p_sofu_no := '0' + inttostr(strtoint(FieldByName('SOFU_NO').Asstring) + 1 );
        else
        p_sofu_no := inttostr(strtoint(FieldByName('SOFU_NO').Asstring) + 1 );

        p_blean := true;
        close;
      end;
    else  //和上面if not eof 对应的
      p_sofu_no := '01' ;
  end;
  Result := p_sofu_no;
end;

[解决办法]
理论看楼上,不过楼上给点代码貌似没加上begin...end
function gfsofutr(p_isse_no,p_isse_rev,p_bukamei_j: string) : string;
var
 p_sofu_no : string;
 p_blean :boolean;
begin
  with DM.QR_PGSOFUTR_040  do
  begin
    close;
    ParamByName('ISSE_NO').AsString := p_isse_no;
    ParamByName('ISSE_REV').AsString := p_isse_rev;
    Open;
    IF NOT EOF THEN
    begin            //++++++begin
      p_blean := false;
      while not eof do


      BEGIN
        if  FieldByName('BUKAMEI_J').Asstring = p_bukamei_j THEN
            p_sofu_no := FieldByName('SOFU_NO').Asstring ;
        p_blean := true;
        break;   //退出循环
        NEXT;
      End;
      if  p_blean = false then
        with DM.QR_PGSOFUTR_040  do
        begin
          close;
          ParamByName('ISSE_NO').AsString := p_isse_no;
          ParamByName('ISSE_REV').AsString := p_isse_rev;
          Open;
          if strtoint(FieldByName('SOFU_NO').Asstring) < 10 then
          p_sofu_no := '0' + inttostr(strtoint(FieldByName('SOFU_NO').Asstring) + 1 );
          else
          p_sofu_no := inttostr(strtoint(FieldByName('SOFU_NO').Asstring) + 1 );
 
          p_blean := true;
          close;
        end;
    end             //++++++++end, 有对应的else,无分号。
    else  //和上面if not eof 对应的
      p_sofu_no := '01' ;
  end;
  Result := p_sofu_no;
end;

热点排行