为什么通信老不对

为啥通信老不对
procedure TForm3.Comm1ReceiveData(Sender: TObject; Buffer: PWideChar;
  BufferLength: Word);
var

 pStr        : PChar;
begin
   pStr := Buffer;
  memo2.Lines.Add(pStr);
end;

TPCOMM comm1属性代码:
object Comm1: TComm
    CommName = 'COM4'
    XonLimit = 500
    XoffLimit = 500
    ByteSize = _8
    Parity = None
    StopBits = _1
    XonChar = #17
    XoffChar = #19
    ReplacedChar = #0
    ReadIntervalTimeout = 100
    ReadTotalTimeoutMultiplier = 0
    ReadTotalTimeoutConstant = 0
    WriteTotalTimeoutMultiplier = 0
    WriteTotalTimeoutConstant = 0
    OnReceiveData = Comm1ReceiveData
    Left = 48
    Top = 256
  end


上下位机波特率都为9600 ,异步通信,8位数据,禁止校验位,1位停止位。
比如发送:上位机发送efead 然后接收得到下面乱码,得到的数据也不全。下位机直接发送,情况也类似下面的接收结果。 
eꮫꮫꮫꮫﻮﻮﻮ

fꮫꮫꮫꮫﻮﻮﻮﻮﻮﻮﻮ

eꮫꮫꮫꮫﻮﻮﻮ

用串口助手都比较正常,为啥自己弄的不对?

------解决方案--------------------
PAnsichar
------解决方案--------------------
查看下你的BufferLength
------解决方案--------------------
引用:
PAnsichar

 是这个原因