unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TCmdBuffer = class
public
Cmd, ParaData: string;
Next: TCmdBuffer;
procedure add(cmd,ParaData:string);
procedure Delete(cmd:string);
end;
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Memo1: TMemo;
Button7: TButton;
Button8: TButton;
Edit1: TEdit;
Edit2: TEdit;
Button9: TButton;
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
private
{ Private declarations }
CmdBuffer: TCmdBuffer;
procedure Send(Cmd, ParaData: string);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TCmdBuffer.add(cmd,paradata:string);
var p,a:TCmdBuffer;
begin
P:=TCmdBuffer.Create;
a:= TCmdBuffer.Create;
//if p.Cmd='' then p:=nil;
p.Cmd:=cmd;
p.ParaData:=paradata;
p.Next:=nil;
a:=Next;
p.Next:=a;
Next:=p;
end;
procedure TCmdBuffer.delete(cmd:string );
var p,a, a1,d1:TCmdBuffer;
Find:Boolean;
begin
Find:=False;
P := TCmdBuffer.Create;
a := TCmdBuffer.Create;
a1:= TCmdBuffer.Create;
d1:= TCmdBuffer.Create;
a1:=nil;
a:=Next;
while a<>nil do
begin
d1:= TCmdBuffer.Create;
p.Cmd :=a.Cmd;
p.ParaData :=a.ParaData;
p.Next :=nil;
if (a.Cmd=cmd) and Not Find then
begin
Find:=True;
a:=a.Next;
continue;
end;
if a1=nil then
begin
System.move(p,a1,Sizeof(p));
System.move(d1,p,Sizeof(d1));
a:=a.Next;
continue;
end;
System.move(a1,p.Next,Sizeof(a1));
System.move(p,a1,Sizeof(p));
System.move(d1,p,Sizeof(d1));
a:=a.Next;
end;
Next:=a1;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
CmdBuffer:=TCmdBuffer.Create;
//CmdBuffer:=nil;
end;
procedure TForm1.Button5Click(Sender: TObject);
var p,q:TCmdBuffer;
s:TStringlist;
begin
s:=TStringlist.Create;
p:= TCmdBuffer.Create;
q:= TCmdBuffer.Create;
//p:=nil;
CmdBuffer.add('aaa',' aaa');
CmdBuffer.add('bbb',' bbb');
CmdBuffer.add('ccc',' ccc');
CmdBuffer.add('ddd',' ddd');
CmdBuffer.add('eee',' eee');
q:=CmdBuffer;
while q<>nil do
begin
//showmessage(q.Cmd+q.ParaData);
q:=q.Next;;
end ;
end;
procedure TForm1.Button6Click(Sender: TObject);
var p:TCmdBuffer;
s:TStringlist;
begin
CmdBuffer.Delete('ddd');
end;
procedure TForm1.Button7Click(Sender: TObject);
var p,q:TCmdBuffer;
s:TStringlist;
begin
q:=CmdBuffer;
while q<>nil do
begin
memo1.Lines.Add(q.Cmd+q.ParaData);
q:=q.Next;;
end ;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
CmdBuffer.add(edit1.Text,edit2.Text);
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
CmdBuffer.Delete(edit1.Text );
end;
end.