Function Num(S1, S2:integer):integer;
var
S11, S12, S21, S22, S31, S32:integer;
begin
    S11 := S1 and $FFFFFF;
    S12 := (S1 and $7F000000) div $1000000;
    If S1 < 0 Then S12 := S12 Or $80;
    S21 := S2 and $FFFFFF;
    S22 := (S2 and $7F000000) div $1000000;
    If S2 < 0 Then S22 := S22 or $80;
    S32 := S12 + S22;
    S31 := S11 + S21;
    If (S31 and $1000000)=1 Then S32 := S32 + 1;
    Num := (S31 And $FFFFFF) + (S32 and $7F) * $1000000;
    If (S32 And $80)=1 Then Num := Num Or $80000000; //提示出错:not enough actual parameters
end;

解决方案 »

  1.   

    Function Num(S1, S2:integer):integer;
    var
    S11, S12, S21, S22, S31, S32, p:integer;
    begin
      S11 := S1 and $FFFFFF;
      S12 := (S1 and $7F000000) div $1000000;
      If S1 < 0 Then S12 := S12 Or $80;
      S21 := S2 and $FFFFFF;
      S22 := (S2 and $7F000000) div $1000000;
      If S2 < 0 Then S22 := S22 or $80;
      S32 := S12 + S22;
      S31 := S11 + S21;
      If (S31 and $1000000)=1 Then S32 := S32 + 1;
      p := (S31 And $FFFFFF) + (S32 and $7F) * $1000000;
      If (S32 And $80)=1 Then p := p Or $80000000; //提示出错:not enough actual parameters
      Result := p;
    end;试下这个。Num := (S31 And $FFFFFF) + (S32 and $7F) * $1000000;
    这句中Num在等号左侧,被看做返回值,是正确的不提示错误。If (S32 And $80)=1 Then Num := Num Or $80000000; 
    这句中第一个Num在等号左侧被当做返回值,不会提示错误,第二个Num在等号右侧被当做了函数调用,所以提示not enough actual parameters,即函数参数不够。
      

  2.   

    函数名称是Num,在函数内部调用 If (S32 And $80)=1 Then Num := Num Or $80000000;
    没有符给参数.