调用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'
这个问题该如何解决,希望高手给予帮助,谢谢!
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'
这个问题该如何解决,希望高手给予帮助,谢谢!
解决方案 »
- delphi中 Grid问题、、求指导、、
- 送分啦!
- 为什么DBF数据库不能使用SQL语句中的批量插入语句呢?
- delphi fastreport 图表 标题
- xcopy问题
- 在线等待:如何让ListView具有像TreeView那样的展开收缩功能。
- 急问:把数据库中的图片和文本怎么放在一起打印??!!
- 在三层中“临时表”如何应用?
- 谁能 远程协助下 帮我解决一个报表问题,我都解决一周了也没想出好的办法,着急啊。。。。
- 做delphi打印一般用的是不是自带构件,还是自己做
- 有谁用delphi中的spcomm做过串口通讯?有的话,给我发一份,顺便问一下,接受超时如何处理,还有如何控制串口的开与关,急!!!!!!!!!!!
- 调用copymemory()函数时,若传递的第二个参数是string类型,应该怎么办?
你的错误可能以下原因引起是:
1.StringGrid1.RowCount-2可能小于0,动态数组buf_list:array of Tmy_data;下标是从0开始
2.buf_list在使用前需要SetLength()设置长度;
3.buf_list[StringGrid1.RowCount-2].buf 也是一个动态数组,最好SetLength(buf_list[StringGrid1.RowCount-2].buf ,DataLen);用完后,可通过SetLength(buf_list[StringGrid1.RowCount-2].buf ,0)释放
你好,pchar(Data)与@Data[1]我都用过,可还是提示一样的错误啊,不定我没用SetLength(buf_list[StringGrid1.RowCount-2].buf ,0)释放,是不是和这个有关?
这句话用在什么地方,还望赐教!
此问题已经解决了,原因是我只给Buf_list二维数组的第二维分配大小,没有给第一维分配大小,呵呵,才学习编程,很多东西都不懂,还望大家以后多多帮忙!我没有分,也不能给你们加分了,不好意思啊