串口通讯下使用move函数报错的有关问题? 有点急

串口通讯下使用move函数报错的问题? 有点急!!!
用SPCOMM写了个串口的程序,在接收的事件里这样写:

procedure TMainForm.comm1ReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
var 
  rbuf: array[0..1024] of byte;
begin

  ...............

  move(buffer^, pchar((@rbuf)^), BufferLength);

  .....................

end;

如果接收到的数据 BufferLength <30 都没有问题,但是超过这个数那系统就会自动关闭退出,提示非法访问内存。
但是奇怪的是,在我自己调试的电脑上不会有这个错误,在其他没有安装DELPHI的电脑就会有错误提示,请问这和什么
有关系呢?

------解决方案--------------------
那我来jf了
呵呵
------解决方案--------------------
jf的灰过
------解决方案--------------------
procedure TMainForm.comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
rbuf: Array of char;
begin

...............
GetMem(rbuf,BufferLength);
try
move(buffer^, rbuf^,BufferLength);
.................
finally
FreeMem(rbuf);
end;

.....................

end;
------解决方案--------------------
探讨
procedure TMainForm.comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
rbuf: Array of char;
begin

...............
GetMem(rbuf,BufferLength);
try
move(b……

------解决方案--------------------
探讨
引用:
procedure TMainForm.comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
rbuf: Array of char;
begin

...............
GetMem(rbuf,BufferLength);
try
……

------解决方案--------------------
我的方法其实跟wzwcn一样,发送汉字都没有问题。但wzwcn所提示的方法有一点点漏洞,这里我就不公开说别人的漏洞了。另外建议将rbuf: Array of char;定义改为rbuf:pchar;更简洁。
------解决方案--------------------
探讨
引用:
能解决这个问题,我可以加分

你说反了,应该这么说:

能加分的话,肯定能解决。



因为我对串口通讯比较熟悉,而且用的控件也跟你相同。

------解决方案--------------------
move(buffer^, pchar((@rbuf)^), BufferLength);
这种函数都不检查边界的??小心覆盖你的执行区域,怎么挂的都不知道。
既然LZ你都知道是这个函数出错了,解决应该不难才是。好好检查下你的内存操作,特别是不熟悉的操作。
很多错误都是想当然才出现的,你以为程序会怎么怎么执行,实际上不尽然。说到低,还是经验不够!