【发布时间】:2015-10-21 19:34:17
【问题描述】:
当完成某个计算值并将 TText.text 设置为该值的方法时,我收到以下错误:
'String index out of range. (-1) Must be >=0 and <=0'
我确保我的计算是安全的,并在异常发生前后处理了可能的异常。真的只是简单的加法计算....
快速的谷歌搜索让我发现: Firemonkey: Setting TLabel Text causes String Index out of Range Exception
1) 我没有使用回车,也没有使用任何换行符。这是我设置 ttext 值的代码 -
TotalCost.text:='$'+FormatFloat('0.00',total);
2) 不是TLabel,而是TText组件。
3) 这不会在任何运行 iOS 9.0.2 的 Android 设备、模拟器或我的第 4 代 iPad 上引发任何错误,但会在运行 iOS 9 的较新 iPhone 上引发错误。
关于解决方法或错误修复的任何想法?很难调试哪一行会引发错误,因为我无法直接访问较新的 iPhone,我拥有的设备或模拟器在调试时也不会引发异常。
谢谢
【问题讨论】:
-
为什么是近距离投票?因为我的问题太“冗长或不简洁”?好吧,这与我看到 Stack Overflow 的法线经常因为没有提供足够详细信息的问题而抨击新成员的频率不矛盾吗?
-
你需要做一些调试。很难看出我们能提供什么帮助。缩小问题范围,将其隔离。
-
错误信息很奇怪,听起来好像无论什么产生它只会满足零字符串索引。嘿嘿...
-
这个特殊的异常来自
System.Character类中的函数,当将字符串索引作为参数传递时。在 XE8 之前(包括在内),这些函数在所有平台上都需要基于 1 的索引。但是错误消息说索引必须是>=0(它在XE8中说>=1),所以EMB必须更新西雅图的函数来解释移动平台上基于0的字符串,并且这种变化显然在某些方面被破坏了案例。不过,我没有安装西雅图来验证这一点。 -
您能否提供一个说明问题的short, self contained example?