本帖最后由 superglh 于 2010-04-04 15:19:16 编辑

解决方案 »

  1.   

    呵呵,玩的少。还不知道有bug。
    (也许是5玩的方向于bug擦肩而过了吧)
      

  2.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, IniFiles;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        FCacheConfigList: THashedStringlist;
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      t: Cardinal;
      i: Integer;
    begin
      t := GetTickCount;
      for i := 0 to 10000 do
        FCacheConfigList.Add(IntToStr(i + 1));
      FCacheConfigList.Sort;{问题在这里,第一次排序很快,如果再点击一次Button1就排序很耗时,等待大约5分钟以后排序完成,再点击button1就没问题了}
      ShowMessage(IntToStr(GetTickCount - t));
      ShowMessage(IntToStr(FCacheConfigList.Count));
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      FCacheConfigList := THashedStringlist.Create;
    end;end.Delphi 2007和Delphi 2010都存在这样的情况,还没有测试TStringList,各位可以试一试
      

  3.   

    楼上,加一行,速度都一样了begin
    FCacheConfigList.Clear;
      

  4.   

    TStringlist 也有这个问题 Delphi7