Чтобы узнать, в чем заключается разница, используйте собственную функцию сравнения.Идите символ за символом, пока не найдете то, что выглядит одинаково для ваших глаз, но отличается по порядковому значению.
Другие люди предложили использовать отладчик, но если вы не можете этого сделать, напишите код.
function CompareStrExt(s1,s2:String; var idx:Integer; var c1,c2:Char):Boolean;
var
len1,len2,minlen:Integer;
begin
result := true;
c1 := Chr(0);
c2 := Chr(0);
idx := 1;
len1 := Length(s1);
len2 := Length(s2);
minlen := len1;
if len2<minlen then
minlen := len2;
while idx <= minlen do begin
c1 := s1[idx];
c2 := s2[idx];
if c1<>c2 then begin
result := false;
exit;
end;
Inc(idx);
end;
if idx>len1 then
c1 := Chr(0)
else
c1 := s1[idx];
if idx>len2 then
c2 := Chr(0)
else
c2 := s2[idx];
result := (len1=len2);
end;
Вот пример вызова:
if not CompareStrExt('123','123a',idx,c1,c2) then begin
// make ordinal Numeric (binary) values visible to your eyeballs.
msg := IntToStr(Ord(c1)) + ' <> ' + IntToStr(Ord(c2));
end;