1.stringlist添加记录
  New(Record);
  Record^.Name := '1';
  Record^.Unit := '克';
  stringlist1.AddObject(Record^.Name,Pointer(Record));2.现在需要删除stringlist中的记录应该怎么办?
以下这种方法不行!
stringlist1.Objects[3].Free;
stringlist1.Delete(3);这个删除应该怎么做?

解决方案 »

  1.   

    dispose(pointer(stringlist1.objects[3]));
    stringlist1.delete(3);
      

  2.   

       stringlist1.Add('111')
       stringlist1.Add('222')
       stringlist1.Add('333')
       stringlist1.Delete(2);
      这样可以删除第三个。  
      关键是你用的是addobject,用stringlist1.Delete(3);是不行的。
      
      

  3.   

      stringlist1.Objects[3].Free;这一句可以不要,
      直接用stringlist1.delete(3);就好了。
      肯定是可以的。
      看是否删除成功的效果的话,你只需要用放一个MEMO上去,然后memo1.lines:=stringlist1;就可以知道是否删除成功了。
      以下是我测试的代码
      
      unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;  pw=^mm;  mm=record      name:string;
          number:string;
      end;var
      Form1: TForm1;
       x:tstringlist;
       w:pw;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    begin
      x:= tstringlist.Create;
      x.Add('1111');
      x.Add('2222');
      memo1.Lines:=x;
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
       new(w);
       w^.name:='test';
       x.AddObject(w^.name, pointer(w));
       memo1.Lines:=x;
    end;procedure TForm1.Button4Click(Sender: TObject);
    begin
       x.Delete(2);
       memo1.Lines:=x;
    end;end.
      
      

  4.   

    dispose(pointer(stringlist1.objects[3]));
    stringlist1.delete(3);
      

  5.   

      你是要删除里面的object?还是删除字符串呢?
      
      

  6.   

      那我理解错了,你说的记录是指record?哦,我一般理解为结构,我还以为你说的记录是字符串的意思呢
      

  7.   

      总之理解错了,你要删除那个动态创建的record指针就用1楼的dispose.