delphi – 使用.AsString或.Text?

前端之家收集整理的这篇文章主要介绍了delphi – 使用.AsString或.Text?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚看到他们用过的一些代码(D5)……
aStr:=tblAcct.FieldByName('Name').Text;

它似乎工作正常,但我一直用…

aStr:=tblAcct.FieldByName('Name').AsString;

我在加载TMemo时使用了两者,但似乎没有区别.

aMemo.Lines.Text:=tblAcct.FieldByName('History').Text;
aMemo.Lines.Text:=tblAcct.FieldByName('History').AsString;

有什么理由说我应该使用一个而不是另一个?
如果是这样,哪一个?

实际上对于TMemo,我通常使用……

aMemo.Lines.Assign(tblAcct.FieldByName('History'))

这似乎也很好.

谢谢

解决方法

Text属性用于获取DataAware控件中正在编辑的字段的文本表示形式,而 DisplayText属性为您提供了一个字符串来表示用户的值(它可能包含标点符号或其他装饰普通的价值).

Contains the string to display in a data-aware control when the field is in edit mode

典型示例是TFloatField,其Currency属性设置为True. DisplayText为您提供一个字符串,其中包含逗号(如果需要),小数分隔符和货币符号. Text属性为您提供不带逗号或货币符号的字符串.

begin
  MyFloatField.Currency := True;
  MyFloatField.AsFloat := 1234.56;
  A := MyFloatField.Text; //'1234.56'
  B := MyFloatField.DisplayText; //'$1,234.56',depends on your locale
end;

上述两个属性都可以自定义编写OnGetText事件处理程序,您可以在其中编写自定义逻辑以将值转换为字符串表示形式. DisplayText参数指示所需字符串是否表示要编辑的值.

另一方面,AsString属性在基本数据类型和字符串之间使用更简单的转换.每个TField后代使用RTL中的函数实现虚拟GetAsString方法以执行该表示.在TFloatField示例之后,此类为此目的调用FloatToStr().

所有这些说,你的问题的答案是:如果没有OnGetText事件处理程序,AsString返回与Text属性相同的字符串,但如果有事件处理程序或非标准TField后代,它可能会有所不同.

我不知道什么更适合你,因为它取决于返回值的预期用途,但如果你用它来在UI中显示用户的值(作为你的代码示例),我建议您使用DisplayText属性.

猜你在找的Delphi相关文章