队列中插入新节点出错 ( 积分: 100 )

  • 主题发起人 主题发起人 philips330
  • 开始时间 开始时间
P

philips330

Unregistered / Unconfirmed
GUEST, unregistred user!
麻烦大家看看下面的程序:
type
RecvInfo = record
nLen : integer;
data : TStream;
end;
var
UDPQueue : TQueue;
UDPRecord : ^RecvInfo;
procedure TMainForm.FormCreate(Sender: TObject);
begin
UDPQueue := TQueue.Create;
UDPServer.DefaultPort := 8090;
UDPServer.Active := true;
end;

procedure TMainForm.UDPServerUDPRead(Sender: TObject;
AData: TStream;
ABinding: TIdSocketHandle);
begin
AData.Seek(0,0);
New(UDPRecord);
UDPRecord^.nLen := AData.Size;
UDPRecord^.data.CopyFrom(AData,AData.Size);
UDPQueue.Push(UDPRecord);
end;
每当运行到 UDPRecord^.data.CopyFrom(AData,AData.Size);的时候就报错
 
麻烦大家看看下面的程序:
type
RecvInfo = record
nLen : integer;
data : TStream;
end;
var
UDPQueue : TQueue;
UDPRecord : ^RecvInfo;
procedure TMainForm.FormCreate(Sender: TObject);
begin
UDPQueue := TQueue.Create;
UDPServer.DefaultPort := 8090;
UDPServer.Active := true;
end;

procedure TMainForm.UDPServerUDPRead(Sender: TObject;
AData: TStream;
ABinding: TIdSocketHandle);
begin
AData.Seek(0,0);
New(UDPRecord);
UDPRecord^.nLen := AData.Size;
UDPRecord^.data.CopyFrom(AData,AData.Size);
UDPQueue.Push(UDPRecord);
end;
每当运行到 UDPRecord^.data.CopyFrom(AData,AData.Size);的时候就报错
 
AData.Seek(0,0);
New(UDPRecord);
UDPRecord^.data := TStream.Create;
////////////////////////
UDPRecord^.nLen := AData.Size;
UDPRecord^.data.CopyFrom(AData,AData.Size);
UDPQueue.Push(UDPRecord);
 
我试过了,但是会报 raised Exception class EAbstractError with message 'Abstract Error'的错误
 
你的程序继承了一个类,使用了但是没有重写它的一个纯虚函数,就会有上面的错误。自己看看吧。
 
继续期待答案,队列里边可以插入流嘛?
 
后退
顶部