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 { 这一点和 Windows 中 TCHAR 类的数据/方法等有点类似。 |
|