8

Delphi XE3 では、 3 番目のパラメータの有無にかかわらず、文字列型に対してCopy関数を使用できます。例えば、

s := '1234567890';
Writeln(Copy(s, 2));

上記は、32 ビット EXE 用にコンパイルされた場合、234567890 を出力します。ただし、同じコードを 64 ビット EXE にコンパイルすると、何も出力されません。

どうしてこれなの?32ビットアプリを64ビットに移植するときは、実際にそのようなすべてのコードをたとえばCopy(s, 2, Length(s) - 1)に変更する必要があります。

4

1 に答える 1

11

ご報告いただいた動作を再現できませんでした。そのコードを完全に更新された 64 ビット XE3 でコンパイルすると、コードは期待どおりの出力を生成しました。

私は次のいずれかだと結論付けています。

  1. XE3 インストールを完全に更新していません。
  2. あなたのコードはCopy、コードに含まれている別の関数を使用しています。

項目1が説明であることを証明するQCレポートを指摘してくれた@bummiに感謝します。あなたの解決策は(明らかに)更新を適用することです。

于 2013-04-22T08:36:44.997 に答える