[FMX]留意 XE10.1 在Android下的UnicodeString的数组起始点是0而不是1

titan_ysl 2016-06-12 07:31:16
昨天调试程序,在windows平台上正确运行的代码在安卓下却出错,因为模拟器的原因,又不能追踪进去找原因,结果找了两个多小时才查出了问题。看下面的例子:

UnicodeString s="12345678";

在windows32位程序下。
s[1]的结果是‘1‘;
s.SubString(1,8)的结果是‘12345678‘;

在安卓下
s[1]的结果是‘2‘;
s.SubString(1,8)的结果是程序运行出错,

把UnicodeString换成AnsiString,结果也一样。
原因,在windows平台,String数组的起点是从1开始,在安桌平台上,String数组的起点是从0开始。大家切记!
...全文
369 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
移动平台编译器的string索引都是从0开始的,在当初XE还是XE2推出的时候就已经公布这一“特性”了。
FASM_FASM 2016-06-13
  • 打赏
  • 举报
回复
接分,走人。

551

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 茶馆
社区管理员
  • 茶馆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧