У меня есть этот простой кодВложенные функции компаратора не удается TStringList.CustomSort с использованием Delphi XE3 64-битную
procedure TForm2.btn1Click(Sender: TObject);
var s : TStringList;
function compare(s : TStringList; i1, i2 : integer) : integer;
begin
result := CompareText(s[i1], s[i2]);
end;
begin
s := TStringList.Create;
try
s.add('s1');
s.add('s2');
s.add('s3');
s.CustomSort(@compare);
finally
s.free;
end;
end;
Он работает, как ожидалось, когда я скомпилировать его как 32-бит, но я получаю нарушение прав доступа при использовании 64- немного. Для сравнения 64-битной версии, s = nil. i2 = some random value
;
Он также работает, как и ожидалось, для цели Win64, если я извлекаю функцию compare
за пределами функции btn1Click
.
Это ошибка System.Classes, есть ли способ исправить?
Он работает, как и ожидалось, если функция сравнения из btn1Click – TheHorse
не оставлять комментарии - отредактируйте quesiton вместо этого. –
Я уверен, что это обман несколько раз за –