我有两个memo,memo1有N行数据,形如 1,2,3,4,5,6,7(七个数字一组,每个数字在1-30之间,数字之间用,隔开)    ,memo2内有N行形如  12,3,24,5,6,7  (六个数字一组,每个数字在1-30之间,数字之间用,隔开),我想将memo1内所有和memo2内各行六个数字相同的行找出来留在memo1内,其它删除?如何实现?最好给点提示代码?谢谢

解决方案 »

  1.   

    procedure TfrmMain.Button1Click(Sender: TObject);
    var i:Integer;
        s,t:string;
    begin
        for i := 0 to Memo1.Lines.Count -1 do
        begin
            s:=Copy(Memo1.Lines.Strings[i],1,Length( Memo2.Lines.Strings [i]));
            if s=Memo2.Lines.Strings[i] then
                t:=t+s+#13#10;
        end;
        memo1.text:= t;
    end;
      

  2.   

    我比较笨,就会用笨方法:var
      i, j, k, Count: Integer;
      sl1, sl2 :TStringList;
    begin
      sl1 :=TStringList.Create;
      sl2 :=TStringList.Create;
      try
        for i := Memo1.Lines.Count-1 downto 0 do
        begin
          sl1.DelimitedText :=Memo1.Lines[i];
          for j := 0 to Memo2.Lines.Count - 1 do
          begin
            Count :=0;
            sl2.DelimitedText :=Memo2.Lines[j];
            for k := 0 to sl1.Count - 1 do
              if sl2.IndexOf(sl1[k])>=0 then
                Count :=Count+1;
            if Count>=6 then
              Break;
          end;
          if Count<6 then
            Memo1.Lines.Delete(i);
        end;
      finally
        sl1.Free;
        sl2.Free;
      end;
      

  3.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      i, j, k, Count: Integer;
      sl1, sl2 :TStringList;
    begin
      sl1 :=TStringList.Create;
      sl2 :=TStringList.Create;
      try
        for i := Memo1.Lines.Count-1 downto 0 do
        begin
          sl1.DelimitedText :=Memo1.Lines[i];
          for j := 0 to Memo2.Lines.Count - 1 do
          begin
            Count :=0;
            sl2.DelimitedText :=Memo2.Lines[j];
            for k := 0 to sl1.Count - 1 do
              if sl2.IndexOf(sl1[k])>=0 then
                Count :=Count+1;
            if Count>=6 then
              Break;
          end;
          if Count<6 then
            Memo1.Lines.Delete(i);
        end;
      finally
        sl1.Free;
        sl2.Free;
      end;
    end;