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

Delphi : Operator not aplicable to this operand type

我是 Delphi 中申请表的初学者,我需要一些帮助。所以它基本上是一个程序,它对来自的数字进行 Aritmetic 计数 便签盒。我还想给它添加间隔。 (-15;20> 我想对所有奇数都这样做。

这里列出了变量 soucet:SUM, pocet:count 个数字, Prumer:Arithmetic意思是

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>';

但我只希望此代码用于奇数...

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>';

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

您的 x 声明为 realmod 运算符在 integer

上工作

或者

  • x 声明为 integer 并使用 StrToIntTryStrToIntStrToIntDef io StrToFloat
  • 像这样将 real 截断为 intif Trunc(x) mod 2 <> 0 或者更好地使用内置的 odd 函数,像这样:if odd(Trunc(x))

这将解决您眼前的问题,但您可能需要继续阅读

  • 输入验证
  • 干净的代码

与您当前的代码无关,但足够重要,值得一提

  • error/resource 处理 (尝试...终于)