procedure TForm2.Button1Click(Sender: TObject); var tempp,p:plink; begin new(tempp); tempp^.mh:=edit1.Text; tempp^.sl:=edit2.Text; tempp^.dw:=edit3.Text; tempp^.ck:=edit4.Text; tempp^.next:=nil; if dtrec=nil then begin new(dtrec); dtrec:=tempp; end else begin p:=dtrec; while p^.next<>nil do p:=p^.next; p^.next:=tempp; end; edit1.Clear; edit2.Clear; edit3.Clear; edit4.Clear; edit1.SetFocus; end;procedure TForm2.Button3Click(Sender: TObject); var p,p1:plink; i:integer; begin if edit1.Text=''then begin showmessage('请输入模号,模号不能为空!'); exit; end; i:=0; p:=dtrec; p1:=nil; //指针搜索 while (p<>nil) do begin if p.mh=edit1.Text then break; p1:=p; //保存当前指针 p:=p^.next; end; if p=nil then begin showmessage('无数据!'); Exit; end; if p1=nil then begin //删除第一个元素 p1:=p; p:=p^.next; dispos(p1); Exit; end; //删除元素 p1^.next:=p^.next; dispos(p); end;
var
tempp,p:plink;
begin
new(tempp);
tempp^.mh:=edit1.Text;
tempp^.sl:=edit2.Text;
tempp^.dw:=edit3.Text;
tempp^.ck:=edit4.Text;
tempp^.next:=nil;
if dtrec=nil then
begin
new(dtrec);
dtrec:=tempp;
end
else begin
p:=dtrec;
while p^.next<>nil do
p:=p^.next;
p^.next:=tempp;
end; edit1.Clear;
edit2.Clear;
edit3.Clear;
edit4.Clear;
edit1.SetFocus;
end;procedure TForm2.Button3Click(Sender: TObject);
var
p,p1:plink;
i:integer;
begin
if edit1.Text=''then
begin
showmessage('请输入模号,模号不能为空!');
exit;
end;
i:=0;
p:=dtrec;
p1:=nil;
//指针搜索
while (p<>nil) do
begin
if p.mh=edit1.Text then
break;
p1:=p; //保存当前指针
p:=p^.next;
end;
if p=nil then
begin
showmessage('无数据!');
Exit;
end;
if p1=nil then
begin
//删除第一个元素
p1:=p;
p:=p^.next;
dispos(p1);
Exit;
end;
//删除元素
p1^.next:=p^.next;
dispos(p);
end;
关闭再次点击出库进入的时候还是这样子的,我制作了一个timer让他不停显示
procedure TForm2.Timer1Timer(Sender: TObject);
var
p:plink;
begin
listbox1.Clear;
listbox2.Clear;
listbox3.Clear;
listbox4.Clear;
p:=dtrec;
if dtrec=nil then
exit
else
repeat
listbox1.Items.Add(p^.mh);
listbox2.Items.Add(p^.sl);
listbox3.Items.Add(p^.dw);
listbox4.Items.Add(p^.ck);
p:=p^.next;
until p=nil;
end;
但是希望能在关闭再打开的时候timer 显示的 listbox1,listbox2,listbox3,listbox4都是空的。
begin
x:=p;
p:=P.next;
dispose(x);
x:= nil;
end;
Invalid pointer operation