为什么复制功能在64位Delphi XE3中表现不同?

jus*_*tyy 8 delphi copy delphi-xe3

在Delphi XE3中,Copy函数可用于包含或不包含第三个参数的字符串类型.例如,

s := '1234567890';
Writeln(Copy(s, 2));
Run Code Online (Sandbox Code Playgroud)

如果为32位EXE编译,则上面打印234567890.但是,当相同的代码编译为64位EXE时,它将不会打印任何内容.

为什么是这样?当将32位应用程序移植到64位时,我必须将所有这些代码实际更改为例如Copy(s,2,Length(s) - 1).

Dav*_*nan 11

我无法再现您举报的行为.当我在完全更新的64位XE3中编译该代码时,代码产生了预期的输出.

我总结说:

  1. 您尚未完全更新XE3安装.
  2. 您的代码使用代码中包含的其他Copy函数.

感谢@bummi指出质量控制报告证明第1项是解释.您的解决方案(显然)是应用更新.