我试图使用LiveBindings格式化一个数字,以便在TEdit中显示在FireMonkey窗体上。
我正在尝试使用绑定的CustomFormat中的Format方法将数字格式化为两个小数位。
我可以对输出“硬编码”:
Format("Hello", %s)它正在工作,但我无法确定要使用什么样的格式字符串。如果我尝试一个标准格式字符串,例如,
Format("%.2f", %s)我得到一个运行时错误“格式无效或与参数不兼容”。
实际上,每当我在格式字符串中包含%符号时,我就会得到一个错误,因此我猜测格式采用不同类型的参数,但是我找不到任何文档来说明正确的格式字符串是什么。
发布于 2013-09-16 16:01:19
参数以%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-16 02:41:51
不能在Format('%.2f',[%s])中使用LiveBindings -> CustomFormat
%s是为数据保留的,对于一个TEdit,它是一个字符串
d : double;
s : string;
...
d := 1234.5678;
s:=Format('%.2f',[d]);Format()是将int、十进制、双浮点转换为字符串。
所有其他方面都会给出一个错误:invalid argument
例如,有效是
TLinkControlToField1 -> CustomFormat : "Double : "+UpperCase(%s)将给你编辑1.文本
Double : 1234.5678好的,我们知道大写()对于'1234.5678‘没有影响。
只显示(%s)是字符串。
解决方案:
#00000.00
圆环和显示01234.571234.57

发布于 2021-02-19 14:40:40
输入67.6666
自定义格式:ToStr(格式(%%.2F,值))+‘%%’
产出67.00 %
https://stackoverflow.com/questions/18801484
复制相似问题