unit Unit1;
{---------------------------------------------------------------------
/
/我的程序错在哪?点new,再点free就出错,谢谢了。
/
---------------------------------------------------------------------}
interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, Buttons;type
  TForm1 = class(TForm)
    new: TBitBtn;
    RichEdit1: TRichEdit;
    free: TBitBtn;
    Edit1: TEdit;
    Edit2: TEdit;
    ListView1: TListView;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure newClick(Sender: TObject);
    procedure freeClick(Sender: TObject);
  private
    { Private declarations }
    lsp:TList;
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
begin
  lsp:=TList.Create;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  lsp.Free;
end;procedure TForm1.newClick(Sender: TObject);
var
  pls:^TList;
begin
  pls:[email protected];
  lsp.Add(pls);
end;procedure TForm1.freeClick(Sender: TObject);
var
  pls:^TList;
begin
  if lsp.Count>0 then
  begin
    pls:=lsp.Items[0];
    lsp.Delete(0);
    pls^.Free;
  end;
end;end.

解决方案 »

  1.   

    如下试一试:pls:=TList.Create;
    TList(pls).Free
      

  2.   

    procedure TForm1.freeClick(Sender: TObject);里面没有Create这个pls对象,怎么能free呢,pls在new里面是个局部变量,在free里面也是个局部变量,不会相互影响的。
    定义pls为全局变量,这样,new和freeclick里面不要重新定义这个变量了。
    如下:
    ...
    var
      Form1: TForm1;implementation{$R *.DFM}
    var
      pls:^TList;procedure TForm1.FormCreate(Sender: TObject);
    begin
      lsp:=TList.Create;
    end;
      

  3.   

    偶接分来了!HOHO~~,:)