2013-04-22 10 views
8

W Delphi XE3 można użyć funkcji Copy dla typu łańcucha z trzecim parametrem lub bez niego. Na przykład:Dlaczego funkcja kopiowania zachowuje się inaczej w 64-bitowym Delphi XE3?

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

Powyższe wydruki 234567890 zostały skompilowane dla 32-bitowego EXE. Jednak gdy ten sam kod zostanie skompilowany do 64-bitowego EXE, nic nie wydrukuje.

Dlaczego tak jest? Muszę zmienić cały taki kod np. Kopiowanie (s, 2, długość (y) - 1) podczas przenoszenia aplikacji 32-bitowej do wersji 64-bitowej.

+11

http://qc.embarcadero.com/wc/qcmain.aspx?d=113805 – bummi

Odpowiedz

11

Nie mogłem odtworzyć zachowania, które zgłaszasz. Kiedy skompilowałem ten kod w całkowicie zaktualizowanym 64-bitowym XE3, kod wygenerował oczekiwany wynik.

wnioskuję, że albo:

  1. Nie w pełni zaktualizowany instalacji XE3.
  2. Twój kod używa innej funkcji Copy zawartej w kodzie.

Dzięki @bummi za wskazanie na QC report, która udowodni, że pozycja 1 jest wyjaśnieniem. Twoim rozwiązaniem jest (oczywiście) zastosowanie aktualizacji.

Powiązane problemy