P
pxlei
Unregistered / Unconfirmed
GUEST, unregistred user!
新年好!
在程序中,有函数如下:
procedure ByteCopy(Dest: PChar; Source: PChar; Len: Integer);
var
I: Integer;
PDest: PChar;
PSourceChar;
begin
PDest:= Dest;
PSource:= Source;
for I:=1 to Len do
begin
PDest^:=PSource^;
Inc(PDest);
Inc(PSource);
end;
end;
定义了一个Type 如下:
type
PPacketHead = ^TPacketHead;
TPacketHead = record
TransID : Array[1..10] of Char;
MsgType : Char;
end;
当我如下访问时:
var
MsgHead : AnsiString;
pMsgHead: PPacketHead;
begin
MsgHead := Copy('WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW',1,150);
pMsgHead := PPacketHead(MsgHead);
ByteCopy(@pMsgHead^.MsgType,'0',1);
end;
执行正确!
当如下时:
var
MsgHead : AnsiString;
pMsgHead: PPacketHead;
begin
MsgHead := 'wwww';
pMsgHead := PPacketHead(MsgHead);
ByteCopy(@pMsgHead^.MsgType,'0',1);
end;
执行ByteCopy告诉非法指针错误,为什么呢?
在程序中,有函数如下:
procedure ByteCopy(Dest: PChar; Source: PChar; Len: Integer);
var
I: Integer;
PDest: PChar;
PSourceChar;
begin
PDest:= Dest;
PSource:= Source;
for I:=1 to Len do
begin
PDest^:=PSource^;
Inc(PDest);
Inc(PSource);
end;
end;
定义了一个Type 如下:
type
PPacketHead = ^TPacketHead;
TPacketHead = record
TransID : Array[1..10] of Char;
MsgType : Char;
end;
当我如下访问时:
var
MsgHead : AnsiString;
pMsgHead: PPacketHead;
begin
MsgHead := Copy('WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW',1,150);
pMsgHead := PPacketHead(MsgHead);
ByteCopy(@pMsgHead^.MsgType,'0',1);
end;
执行正确!
当如下时:
var
MsgHead : AnsiString;
pMsgHead: PPacketHead;
begin
MsgHead := 'wwww';
pMsgHead := PPacketHead(MsgHead);
ByteCopy(@pMsgHead^.MsgType,'0',1);
end;
执行ByteCopy告诉非法指针错误,为什么呢?