我正在尝试将字符串隐藏到SOAP TXSDecimal
中,这是我目前拥有的,因此编辑框中的值不会存储在Foo.Limit
内
Foo.limit := TXSDecimal(edtLimit.text);
PS:Foo.Limit
是TXSDecimal
数据类型
我也尝试过
Foo.limit.asAsBcd := edtLimit.text;
//违反访问权限
所以我想知道如何将String
转换为TXSDecimal
答案 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);