主要是想检测 memo里面有没有重复的数据。。但是我的这个代码不能实现功能,比如memo里面有40个数据 执行一次代码之后就剩下20个数据了。。然后再执行一次就是10个。。不知道是哪里出错了  贴出代码。procedure TForm1.Button1Click(Sender: TObject);
 var
   i,j:integer;begin
   for i:=0 to memo1.lines.count-1 do
   begin
       for j:=1 to memo1.lines.count-1 do
       begin
           if memo1.Lines[i]=memo1.Lines[j] then
           begin
               memo1.Lines.Delete(i);
           end;       end;
   end;
   edit1.Text:=inttostr(memo1.Lines.count);
end;

解决方案 »

  1.   

    你这个不行吧,会导致指针混乱的var
      i,j,m,n:Integer;
      s,s1:string;
    begin
      i:=self.Memo1.Lines.Count;
      if i=0 then
        Exit;
      j:=0;
      while j<self.Memo1.Lines.Count do
      begin
        s:=self.Memo1.Lines.Strings[j];
        for n:=1 to self.Memo1.Lines.Count-1 do
        begin
          if n=self.Memo1.Lines.Count-1 then
            j:=j+1;
          s1:=Self.Memo1.Lines.Strings[n];
          if s=s1 then
          begin
            self.Memo1.Lines.Delete(n);
            Continue;
          end;
        end;
      end;
    end;
      

  2.   

    for j:=1 to memo1.lines.count-1 do
    改为
    for j:=1 to memo1.lines.count-1 do
      

  3.   

    不好意思,写错了,是改为
    for j:= i + 1 to memo1.lines.count-1 do
      

  4.   

    上面那个还是有bug,试试这个吧procedure TForm1.Button2Click(Sender: TObject);
    var
      i,j,m,n,k:Integer;
      s,s1:string;
    begin
      i:=self.Memo1.Lines.Count;
      if i=0 then
        Exit;
      j:=0;
      while j<self.Memo1.Lines.Count do
      begin
        s:=self.Memo1.Lines.Strings[j];
        n:=1;
        while n<self.Memo1.Lines.Count do
        begin
          if n=j then
          begin
            n:=n+1;
            Continue;
          end;
          s1:=Self.Memo1.Lines.Strings[n];
          if s=s1 then
          begin
            self.Memo1.Lines.Delete(n);
            Continue;
          end
          else
            n:=n+1;
        end;
        j:=j+1;
      end;
    end;