两个TStringList A和B   我想在A中去除B中的所有相同的字段,怎么去除?比如A中有
1
2
3
4
5B中有2
3
4去掉后A只有
1
5
能否帮写个函数,要求效率足够高。

解决方案 »

  1.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      A,B:TStringList;
      i,k:Integer;
      s :string;
    begin
      A := TStringList.Create;
      B := TStringList.Create;
      try
        //Sorted属性一定要设为True
        //设成True后List在搜索的时候就会以2分法去查找
        //这样速度就会快点。暂时想到的就只有这一个方法。
        A.Sorted := True;
        B.Sorted := True;
        for i:=0 to B.Count -1 do
        begin
          s := B.Strings[i];
          if A.Find(s,k) then
            A.Delete(K);
        end;
      finally
        A.Free;
        B.Free;
      end;
    end;
      

  2.   

        for i:=0 to B.Count -1 do
        begin
          s := B.Strings[i];
          if A.Indexof(S)>-1 then
            A.Delete(K);
        end;
    也可以