Delphi 使用TStringList,我调用List.Sort,但顺序是错误的

Delphi 使用TStringList,我调用List.Sort,但顺序是错误的,delphi,sorting,pascal,lazarus,tstringlist,Delphi,Sorting,Pascal,Lazarus,Tstringlist,我和拉撒路一起工作。我有两个TStringList,在对它们进行排序后,我将它们显示在屏幕上。但顺序是错误的。我无法确定这是怎么错的 这是TStringList未排序时的屏幕截图: 调用FMover.AList.Sort和FMover.BList.Sort后,我将它们显示在屏幕上。这是列表排序后的屏幕截图 您可以看到,项目“…/kam14.in”出现在“…/kam1.in”之前。排序过程工作不正常 这是程序中使用的一些程序 procedure TAddProblemForm.actRegex

我和拉撒路一起工作。我有两个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;   

看看这个:非常感谢你,我明白这怎么可能是错的。但是我不知道内置的
排序方法实现了什么。再次感谢。排序方法只是使用AnsiCompareText(或Unicode的类似例程)来确定一个值应该在另一个值之后还是之前。排序实现只是一个基本的快速排序。如果需要,可以使用另一个例程覆盖您的值测试,如果A>B,它只需要返回一个整数+ve,如果A