将字符串转换为 TXSDecimal

Converting a String to TXSDecimal

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

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

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

我也试过了

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

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

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

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

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

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

你可以像上面那样将一个字符串赋给一个BCD,它会自动将它转换成一个数值。如果字符串不包含有效数字,赋值将抛出异常(不是访问冲突,而是另一种异常)。

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

检查 Foo.limit 是否被赋值,如果没有,你可以在 Foo 的构造函数中创建并赋值。

然后需要将string值转换成TBcd值,可以使用FMTBcd.StrToBCD()函数

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