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
声明为 real
但 mod
运算符在 integer
上工作
或者
- 将
x
声明为 integer
并使用 StrToInt
、TryStrToInt
或 StrToIntDef
io StrToFloat
- 像这样将
real
截断为 int
:if Trunc(x) mod 2 <> 0
或者更好地使用内置的 odd
函数,像这样:if odd(Trunc(x))
这将解决您眼前的问题,但您可能需要继续阅读
- 输入验证
- 干净的代码
与您当前的代码无关,但足够重要,值得一提
- error/resource 处理 (尝试...终于)
我是 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
声明为 real
但 mod
运算符在 integer
或者
- 将
x
声明为integer
并使用StrToInt
、TryStrToInt
或StrToIntDef
ioStrToFloat
- 像这样将
real
截断为int
:if Trunc(x) mod 2 <> 0
或者更好地使用内置的odd
函数,像这样:if odd(Trunc(x))
这将解决您眼前的问题,但您可能需要继续阅读
- 输入验证
- 干净的代码
与您当前的代码无关,但足够重要,值得一提
- error/resource 处理 (尝试...终于)