Я работаю с Лазарем. У меня есть два TStringList, после сортировки я показываю их на экран. Но порядок неправильный. Я не могу определить, как это было неправильно.
Это снимок экрана, когда TStringList не отсортирован:
После вызова FMover.AList.Sort и FMover.BList.Sort я показываю их на экране. Это скриншот после сортировки списков.
Как видите, элемент '.../kam14.in' появился перед '.../kam1.in'. Процедура сортировки работает неправильно.
Это некоторая процедура, используемая в программе.
procedure TAddProblemForm.actRegexLoadExecute(Sender: TObject);
var
ARegExpr, BRegExpr: TRegExpr;
s: String;
AExpr, BExpr: String;
Form: TRegexOptionForm;
begin
Form := TRegexOptionForm.Create(Self);
if Form.Execute('in', 'out') = mrOK then
begin
ARegExpr:=TRegExpr.Create;
BRegExpr:=TRegExpr.Create;
FMover.Clear;
ARegExpr.Expression := Form.AExpr;
BRegExpr.Expression := Form.BExpr;
AddSearchResult(FMover.List, SearchDir, true);
for s in FMover.List do
begin
if ARegExpr.Exec(s) then
FMover.AList.Add(s)
else if BRegExpr.Exec(s) then
FMover.BList.Add(s);
end;
// *******************
actInvalidate.Execute;
FMover.AList.Sort;
FMover.BList.Sort;
actInvalidate.Execute;
// *******************
ARegExpr.Free;
BRegExpr.Free;
end;
Form.Free;
end;
И другой
procedure TAddProblemForm.actInvalidateExecute(Sender: TObject);
var
s: String;
begin
ListBox1.Clear;
ListBox2.Clear;
for s in FMover.AList do
ListBox1.Items.Add(s);
for s in FMover.BList do
ListBox2.Items.Add(s);
Application.ProcessMessages;
end;
Sort
. Еще раз спасибо. - person kien_coi_1997   schedule 27.11.2013