Delphi:运算符不适用于此操作数类型

时间:2015-04-15 04:44:28

标签: delphi integer operators operand

我是Delphi中Aplication表单的初学者,我需要一些帮助。所以它基本上是一个程序,它对数字进行Aritmetic计数 备忘录框。我还想为它添加间隔。 (-15; 20>我想为所有的ODD数字做这件事。

此处列出了变量 soucet:SUM, pocet:数字的数量, Prumer:算术平均值

procedure TForm1.Button3Click(Sender: TObject);
var soucet,prumer,x:  Real;
i,pocet:Integer;
begin
Memo1.Clear;
soucet:=0;
pocet:=0;
i:=0;
While i<= Memo1.Lines.Count-1 do begin     --
x:=StrToFloat (Memo1.lines[i]);          --
If (x>-5) and (x<=5) then begin
   soucet:= soucet + x;
   inc(pocet);
end;
 inc(i);
end;
If pocet>0 then begin
  prumer:=soucet/pocet;
  Memo1.Text:= floattostr(prumer);
 end
 else Memo1.Text:= 'Žádná čísla z intervalu (-15;20>';

但我只希望这段代码适用于ODD号码......

procedure TForm1.Button3Click(Sender: TObject);
var soucet,prumer,x:  Real;
i,pocet:Integer;
begin
Memo1.clear;
soucet:=0;
pocet:=0;
i:=0;
While i<= Memo1.Lines.Count-1 do begin     --
x:=StrToFloat (Memo1.lines[i]);          --
If (x>-5) and (x<=5) then begin
  If x mod 2<>0 then begin
    soucet:= soucet + x;
    inc(pocet);
  end;
end;
  inc(i);

end;
If pocet>0 then begin
  prumer:=soucet/pocet;
  Memo1.Text:= floattostr(prumer);
 end
 else Memo1.Text:= 'Žádná čísla z intervalu (-15;20>';

问题是它显示:运算符不适用于此操作数类型。 我该怎么做才能消除这个错误?

1 个答案:

答案 0 :(得分:1)

您已将x声明为real,但mod运算符适用于integer

要么

  • x声明为integer并使用StrToIntTryStrToIntStrToIntDef io StrToFloat
  • real截断为int,如下所示:if Trunc(x) mod 2 <> 0或更好地使用内置的odd函数,如下所示:if odd(Trunc(x))

这将解决您的直接问题,但您可能需要阅读

  • 输入验证
  • 清洁代码

并且与您当前的代码无关,但重要的是提及

  • 错误/资源处理(尝试......最后)