调用copymemory()函数时,若传递的第二个参数是string类型,应该怎么办?
type
  Tmy_data=record
    buf:array of char;
end;
buf_list:array of Tmy_data;
Data:string;
copymemory(buf_list[StringGrid1.RowCount-2].buf ,Data,DataLen);
我将Data变量强制转换成Pchar(Data)类型的后,就出提示出错:
project cap.exe raised exception class EAcess violation with message'acess violation at adress 00408840 in module 'cap.exe'
这个问题该如何解决,希望高手给予帮助,谢谢!

解决方案 »

  1.   

    你代码可能存在两个问题:
    1。你要对buf进行空间分配因为他是动态数组  用SetLength(buf,bufLen)
    2。顶一楼
      

  2.   

    你们好,我这样设置后
    setlength(buf_list[StringGrid1.RowCount-2].buf ,PacketInfo.DataLen);
    copymemory(buf_list[StringGrid1.RowCount-2].buf ,@PacketInfo.DataBuf[1],PacketInfo.DataLen);pchar(Data)与@Data[1]我都用过,可还是提示一样的错误啊,
      

  3.   

    改成这样
    opymemory(@buf_list[StringGrid1.RowCount-2].buf[0]   ,@PacketInfo.DataBuf[1],PacketInfo.DataLen);