Delphi XE5中移动平台的字符串要注意的事项

今天把项目往移动平台移植,遇到指针错误,无效地址访问.
XE5的单步调试速度太让人崩溃了.
发现错误出在一个字符串的循环上,我是for i:= 1 to length(字符串变量) do
结果报错.
看了一下XE5的DateType的帮助说明:
Note: All the string types described in this topic are supported by the Delphi desktop compilers (DCC32, DCC64, and DCCOSX).
However, the Delphi mobile compilers (DCCIOS32 and DCCIOSARM) support only the default string type (UnicodeString).
Also, with the Delphi mobile compilers, strings are 0-based and immutable; to manipulate strings, use the TStringHelper functions, which are provided for this purpose. For more information, see Migrating Delphi Code to Mobile from Desktop.

也就是在iOS和Android上字符串只有默认一种也就是UnicodeString.并且字符串的字符索引变成0开始的.而且字符串是不可变的.呃.
那我可怜的跨平台的代码啊.又要多很几行判断了.

判断方式有好多种,比如
{$IFDEF ANDROID}{$IFDEF IOS}
或者干脆如果处理器是ARM处理器就认为是移动代码
{$IF defined(CPUARM)}

补充一个悲剧的发现,尽管在移动代码中字符串以0为起始,但是Pos(‘a’,’abc’)函数返回的还是1.
var
s:string;
s := ‘abc';
Delete(s,1,1);s变成’bc’
copy(‘abc’,1,1);返回的是’a’
也就是系统函数还都是基于1的.

实际上易博龙鼓励我们使用TStringHelper的函数:remove,delete…这些都是基于0的.

可是我要写D7-XE5的跨平台通用功能就没办法了,TStringHelper是早期版本Delphi所不支持的.

此条目发表在Delphi, 未分类分类目录。将固定链接加入收藏夹。

Delphi XE5中移动平台的字符串要注意的事项》有 72 条评论

  1. 红鱼儿说:

    XE5是强列支持用TStringHelper的。

  2. 易信达软件说:

    判断这个用{$IFDEF NEXTGEN}

  3. 匿名说:

    d7 操作字符串,也是从0开始,你可以在d7中测试一下
    str:=’abc';
    copy(str,1,1) =a

  4. Pingback引用通告: 43ytr.icu/j/GPoAr

  5. Pingback引用通告: glyxar.ru

  6. Pingback引用通告: abisko.ru

  7. Pingback引用通告: 2021

  8. Pingback引用通告: Èãðà ïðåñòîëîâ 8 ñåçîí

  9. Pingback引用通告: tv onlayn

  10. Pingback引用通告: video

  11. Pingback引用通告: wwin-tv.com

  12. Pingback引用通告: 00-tv.com

  13. Pingback引用通告: tureckie_serialy

  14. Pingback引用通告: Watch TV Shows

  15. Pingback引用通告: Kinokrad 2019 Kinokrad Hd

  16. Pingback引用通告: serial 1

  17. Pingback引用通告: cerialest.ru

  18. Pingback引用通告: serial

  19. Pingback引用通告: youtube2019.ru

  20. Pingback引用通告: lostfilmtv net

  21. Pingback引用通告: movies

  22. Pingback引用通告: trustedmdstorefy.com

  23. Pingback引用通告: bofilm ñåðèàë

  24. Pingback引用通告: bofilm

  25. Pingback引用通告: 1 seriya

  26. Pingback引用通告: Êîíñóëüòàöèÿ ïñèõîëîãà

  27. Pingback引用通告: topedstoreusa.com

  28. Pingback引用通告: hqcialismht.com

  29. Pingback引用通告: viagramdtrustser.com

  30. Pingback引用通告: rick and morty season 3

  31. Pingback引用通告: See-Season-1

  32. Pingback引用通告: Evil-Season-1

  33. Pingback引用通告: Evil-Season-3

  34. Pingback引用通告: Queer-Eye-We-re-in-Japan-Season-1

  35. Pingback引用通告: 1plus1tv

  36. Pingback引用通告: #1plus1

  37. Pingback引用通告: Watch Movies Online

  38. Pingback引用通告: Film 2020

  39. Pingback引用通告: parazity-oskar-2020

  40. Pingback引用通告: human design

  41. Pingback引用通告: DSmlka

  42. Pingback引用通告: viagra

  43. Pingback引用通告: viagra online

  44. Pingback引用通告: +

  45. Pingback引用通告: ¯jak Son³k

  46. Pingback引用通告: astrolog

  47. Pingback引用通告: film-kalashnikov-watch

  48. Pingback引用通告: generic cialis

  49. Pingback引用通告: cialis online

  50. Pingback引用通告: kinoxaxru.ru

  51. Pingback引用通告: pobachennya u vegas

  52. Pingback引用通告: Proshanie so Stalinym

  53. Pingback引用通告: strelcov 2020

  54. Pingback引用通告: film t-34

  55. Pingback引用通告: online pharmacy

  56. Pingback引用通告: canadian pharmacy

  57. Pingback引用通告: Beograd film 2020

  58. Pingback引用通告: psiholog

  59. Pingback引用通告: psixolog

  60. Pingback引用通告: psyhelp_on_line

  61. Pingback引用通告: Coronavirus real-time updates

  62. Pingback引用通告: PSYCHOSOCIAL

  63. Pingback引用通告: rasstanovka hellinger

  64. Pingback引用通告: Cherekasi film 2020

  65. Pingback引用通告: film doktor_liza

  66. Pingback引用通告: djoker film

  67. Pingback引用通告: viagra 100mg

billwillman进行回复 取消回复

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

你必须启用JavaScript