将字符串转换为TXSDecimal

问题描述 投票:2回答:2

我试图将字符串转换为SOAP TXSDecimal,这是我目前所拥有的,因此我的编辑框中的值不会存储在Foo.Limit

Foo.limit := TXSDecimal(edtLimit.text);

PS:Foo.Limit是一个TXSDecimal数据类型

我也试过了

Foo.limit.asAsBcd := edtLimit.text; //获取访问冲突

所以我想知道你如何将String转换为TXSDecimal

delphi soap delphi-10.2-tokyo
2个回答
1
投票

第一个片段不正确。您将字符串类型转换为TXSDecimal,这是无效的。 TXSDecimal是一个类,您需要有一个实例。有了实例后,可以使用它的属性和方法来设置值。

第二个片段显然是不完整的。如果您遇到访问冲突,可能是因为没有为Foo.limit分配正确的TXSDecimal。

因此,您可以创建一个新实例,将其分配给Foo.limit,并为其分配一个浮点值,如下所示:

Foo.limit := TXSDecimal.Create;
Foo.limit.AsBcd := Edit1.Text;

您可以像上面一样将字符串分配给BCD,它会自动将其转换为数字值。如果字符串不包含有效数字,则赋值将抛出异常(不是访问冲突,而是另一种类型)。

此转换将考虑您的系统设置,因此如果您将逗号设置为小数点分隔符,则无法输入使用句点的数字。


1
投票

检查是否已分配Foo.limit,如果没有,您可以在Foo的构造函数中创建并分配它。

然后你需要在string值中转换TBcd值,你可以使用FMTBcd.StrToBCD()函数。

Foo.Limit.AsBcd := StrToBCD(edtLimit.Text);

© www.soinside.com 2019 - 2024. All rights reserved.