1

我想在备忘录、列表框或其他任何东西中显示某些整数。我已经尝试过备忘录、列表框和 showmessage(),但每个都会引发字符串和整数之间的不兼容错误。

这是它开始出错的地方:

Memo1.Lines.Add('Physical Functioning: '+PhysFunc div PhysCount);

PhysFunc 和 PhysCount 是进一步向上计算的整数。我试过了,例如:

Memo1.Lines.Add('Physical Functioning: '+IntToStr(PhysFunc div PhysCount));

和:

Memo1.Lines.Add(IntToStr('Physical Functioning: '+PhysFunc div PhysCount));

和:

Memo1.Lines.Add(('Physical Functioning: '+PhysFunc div PhysCount).AsString);

ListBox 和 showmessage() 也是如此。但没有一个工作。IntToStr 返回 E2003 未声明的标识符并且 .AsString 返回错误,整数不包含成员“AsString”。有没有其他选择?

我在 Delphi 中使用 SDI 应用程序 - 这可能是问题吗?

谢谢

4

3 回答 3

6

您正在调用接收单个参数类型的Add方法。您需要连接一个字符串和一个整数。为此,您必须将整数转换为字符串。TStringsstring

您尝试使用IntToStr这是一种完全合理的方法来做到这一点。但这失败了,因为编译器找不到IntToStr. 现在,IntToStrSysUtils单元中声明,因此您必须将该单元添加到您的uses子句中。

但是,我可能会Format在这里使用。就像IntToStr,这个函数被声明在SysUtils你必须使用的地方。

Memo1.Lines.Add(Format('Physical Functioning: %d', [PhysFunc div PhysCount]));

有关格式的更多详细信息,请阅读格式字符串的文档。

于 2013-02-07T09:00:50.017 回答
0

第一行代码不起作用,因为PhysFunc div PhysCount是一个整数,它没有转换为字符串。

第二行代码应该可以工作,但我会检查PhysFuncPhysCount的实际值。PhysCount是否有可能以某种方式等于 0?

第三行代码不起作用,因为IntToStr需要整数,而您给了他一个字符串等。

第四行代码不起作用,因为正如您所说,整数不包含成员“AsString”

你还说:

IntToStr 返回 E2003 未声明的标识符

这也可能是问题所在:两个变量之一未声明。确保它们都在var部分中声明。

总结:

  1. 检查是否声明了两个变量;
  2. 检查评估时PhysCount是否<>0。

祝你好运!

于 2013-02-07T09:00:14.900 回答
0

如果包含SysUtils,只需查看用途 。

于 2018-07-11T13:32:37.270 回答