将字符串转换为 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);
我正在尝试将字符串转换为 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);