2

我正在尝试使用 LiveBindings 格式化数字以在 FireMonkey 表单的 TEdit 中显示。

我正在尝试使用绑定的 CustomFormat 中的 Format 方法来格式化带有两位小数的数字。

我可以“硬编码”输出:

Format("Hello", %s)

这是有效的,但我无法确定要使用什么格式字符串。如果我尝试使用标准格式字符串,例如,

Format("%.2f", %s)

我收到运行时错误“格式无效或与参数不兼容”。

事实上,每当我在格式字符串中包含一个 % 符号时,我都会收到一个错误,所以我猜测 Format 需要不同类型的参数,但我找不到任何文档来说明正确的格式字符串是什么。

4

3 回答 3

3

你不能Format('%.2f',[%s])LiveBindings -> CustomFormat

%s 是为数据和 TEdit 保留的,它是一个字符串

d : double;
s : string;
...
d := 1234.5678;
s:=Format('%.2f',[d]);

Format() 是将 [int, decimal, double, float] 转换为string
所有其他都给你一个错误:invalid argument
例如,有效的是

TLinkControlToField1 -> CustomFormat : "Double : "+UpperCase(%s)

将在 Edit1.text 中为您提供

Double : 1234.5678

好的,我们知道 '1234.5678' 的 Uppercase() 没有任何效果。
仅显示 (%s) 是一个字符串

解决方案:


在此处输入图像描述

于 2013-09-16T02:41:51.227 回答
2

该参数作为 %s 传递到 CustomFormat。绑定系统在将数据传递到评估器之前预先解析出此参数。因此,CustomFormat 字符串中的任何其他 % 符号都会出错。

与普通格式字符串一样,您可以通过放置双 %(即 %%)来包含文字 % 符号。

因此,格式字符串中的任何 %s 都需要转换为 %%,例如

Format('%%.2f', %s)

它被解析为

Format('%.2f', 67.66666)

然后解析为

67.67

用于展示。

如果要在最终输出中包含文字 %,则需要放置四倍 %,例如

Format('%%.2f%%%%', %s)

变成

Format('%.2f%%', 67.6666)

并显示为

67.67%

注意:普通格式函数采用最终参数,它是一个值数组。绑定系统中的 Format 方法采用可变长度的参数列表。

此外,方法名称区分大小写。'格式'是正确的,'格式'会失败。

于 2013-09-16T16:01:19.967 回答
0

输入 67.6666

自定义格式:ToStr(Format('%%.2f', Value)) + '%%'

产量 67.00 %

于 2021-02-19T14:40:40.513 回答