Я понимаю, что 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', соответственно, то вне зависимости от «битности» приложения будет выведено «Не равны».
Простая программа под 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.
именно xe2 нет и проверить не могу, но есть занятный документ, валяющийся на embarcodero, по вашему вопросу можно пробовать читать с середины страницы 24 и начало 25-й…
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
var
s1,s2: string;
begin
try
s1:='00000000';
s2:='00000000';
if s1=s2 then
writeln('Равны')
else
writeln('Не равны');
Sleep(100000);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
Выводит — равны.
Обычная ХЕ2 с Update 3, для х64 стоит стандартный же paserver.