Задать вопрос
agorkov
@agorkov

Странное поведение Delphi XE2?

Я понимаю, что Delphi тут не особо любят, но в качестве учебного языка он не так уж и плох. Не так давно мне выпал шанс поработать с самой новой версией компилятора Delphi.

Наконец-то появилась возможность писать 64-битные приложения. И вопрос, собственно, про такие приложения.

Есть код:

var

s1,s2: string;

begin

s1:='00000000';

s2:='00000000';

if s1=s2 then

writeln('Равны')

else

writeln('Не равны');

end;


Этот код, скомпилированный под 32 бита выводит «Равны», этот же код, скомпилированный под 64 бита выводит «Не равны».


А если срокам s1,s2 присвоить '0000' и '0000', соответственно, то вне зависимости от «битности» приложения будет выведено «Не равны».
  • Вопрос задан
  • 3317 просмотров
Подписаться 2 Оценить Комментировать
Ответ пользователя AndreyDaeron К ответам на вопрос (4)
@AndreyDaeron
Простая программа под 32 бита выдаёт «Не равны», что в общем-то правильно. Delphi XE2, Update1

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

var
s1,s2: string;

begin
  try
    s1:='00000000';
    s2:='00000001';
    if s1=s2 then
    writeln('Равны')
    else
    writeln('Не равны');
    Sleep(100000);
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Ответ написан