将字符串转换为TXSDecimal

时间:2019-04-02 09:13:14

标签: delphi soap delphi-10.2-tokyo

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

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

PS:Foo.LimitTXSDecimal数据类型

我也尝试过

Foo.limit.asAsBcd := edtLimit.text; //违反访问权限

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

2 个答案:

答案 0 :(得分:1)

第一个代码段不正确。您正在将字符串强制转换为TXSDecimal,这是无效的。 TXSDecimal是一个类,您需要为其提供一个实例。一旦有了实例,就可以使用它的属性和方法来设置值。

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

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

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

您可以如上所述将字符串分配给BCD,它将自动将其转换为数字值。如果字符串不包含有效数字,则分配将引发异常(不是访问冲突,而是另一种)。

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

答案 1 :(得分:1)

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

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

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