分享

XE7下使用AnsiString,在Android运作,下标竟然是0开始的

 quasiceo 2016-01-20

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 类的数据/方法等有点类似。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章