这个程序是在编辑窗口中输入链表结点的数据,button1显示连表内容,button2删除指定的节点,但在运行时怎么输入一个字符串,不能用button1显示出来,然后它就提示出错,程序如下:
  unit Unit2;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm2 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    ListBox1: TListBox;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Edit1Change(Sender: TObject;var key:Char);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  plink=^node;
  node=record
       data:string[30];
       next:plink;
       end;
var
  Form2: TForm2;
  DtRec:Plink;
implementation{$R *.dfm}procedure TForm2.FormCreate(Sender: TObject);
begin
     DtRec:=nil;
end;
procedure TForm2.Edit1Change(Sender: TObject;var key:Char);
var
   Ptemp,P:Plink;
begin
   if key=#13 then
      begin
        new(Ptemp);
        Ptemp^.data:=Edit1.Text;
        Ptemp^.next:=nil;
        if DtRec=nil
           then begin
                 new(Dtrec);
                 DtRec:=Ptemp;
                 end
           else begin
                 P:=DtRec;
                 while p.next<>nil do
                   p:=p^.next;
                   p^.next:=Ptemp;
                end;
        Edit1.Clear;
        Edit1.SetFocus;
      end;end;
procedure TForm2.Button2Click(Sender: TObject);
var
  P,P1:Plink;
  i:integer;
begin
  i:=0;
  P:=DtRec;
  if p=nil
     then showmessage('连表为空表!')
  else
       if P^.data=Edit1.Text
           then begin
                   DtRec:=P^.next;
                   P^.next:=nil;
                   P:=DtRec;
                end
           else begin
                   P1:=P^.next;
                   repeat
                   if P^.data=Edit1.Text
                       then begin
                                P^.next:=P1^.next;
                                P1:=p;
                                i:=i+1;
                            end
                    else begin
                             P:=P1;
                             P1:=P1^.next;
                         end;
                   until P1=nil;
                   if i=0 then
                       showmessage('连表中无此数据!');
                end;end;
procedure TForm2.Button1Click(Sender: TObject);
var
   P:Plink;
begin
   ListBox1.Clear;
   P:=DtRec;
   repeat
     ListBox1.Items.Add(P^.data);
     P:=P^.next;
   until P=nil;
end;
end.