XE7下使用AnsiString,在Android运作,下标竟然是0开始的
www.MyException.Cn 网友分享于:2015-10-07 浏览:0次
XE7下使用AnsiString,在Android运行,下标竟然是0开始的
在做一个WIFI读取Arduino的DTH11温湿度实验,Arduino回传的是以“,”分割的字串,同样的截取“,”分割内容的代码,在win32上没问题,但是放到Android下,就是出问题,没有结果,最后发现,AnsiString在Android下,第一个起始字符的下标,竟然是0,例如
“12,3”
AnsiString的Pos方法取“,”,win32下得到的位置是3,Android下运行,得到的是2
哎,坑啊,我只会玩BCB。
希望大家遇到了能有帮助,散分。
------解决思路----------------------哦,我来试试
------解决思路----------------------从 XE5 开始,C++Builder/Delphi 中字符串相关的很多方法都提供了0下标和1下标两个版本,如 Pos, Delete, SubString 等等,都有相应的 Pos0/Pos1, Delete0/Delete1, SubString0/SubString1 等函数,当然默认的方法也存在,如 Pos, Delete, SubString... ,只是根据是否定义了 _DELPHI_STRING_ONE_BASED 而决定使用哪个方法:
int Pos(const UnicodeString& subStr) const _ALWAYS_INLINE {
#if defined(_DELPHI_STRING_ONE_BASED)
return Pos1(subStr);
#else
return Pos0(subStr);
#endif
}
这一点和 Windows 中 TCHAR 类的数据/方法等有点类似。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。