【发布时间】:2015-05-18 16:24:34
【问题描述】:
我正在开发一个跨平台库,该库应该在 Delphi 支持的桌面和移动编译器中编译。 正如我们所知,桌面中的字符串是基于 1 的,而移动设备中的字符串是基于 0 的。 Delphi 中是否有任何定义可用于分离可在桌面和移动设备中编译的代码,并且至少向后兼容至 XE2。
类似 if 定义桌面执行此操作,否则移动执行此操作。
抱歉格式错误。从手机打字。
Delphi 版本 XE7 up 1.
【问题讨论】:
-
可以使用
{$ZEROBASEDSTRINGS OFF}关闭基于0的字符串索引 -
@David,感谢您的建议,但不幸的是,在平台部分,我无法确定 POSIX 和 posix32 是属于桌面版还是移动版。如果我能在将平台部分分类到桌面和移动设备方面获得任何帮助,我将不胜感激。
-
@Remy,谢谢,但我很想先尝试其他选择。
-
@Xor-el:即使在移动设备中,所有 RTL 函数都是从 1 开始的。即使在桌面中,所有 String 辅助方法都是从 0 开始的。整个 ZBS 问题仅影响
[]字符串索引运算符,仅此而已。因此,如果您愿意,您可以在移动设备上编写基于 1 的代码,在桌面上编写基于 0 的代码。 Embarcadero 希望每个人都远离基于 1 的 RTL 和 use 0-based strings,适用于所有桌面和移动设备。但是,如果向后兼容性是一个问题,您将无法做到这一点。
标签: delphi