您的位置:程序门 -> delphi -> windows sdk/api



调用copymemory()函数时,若传递的第二个参数是string类型,应该怎么办?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


调用copymemory()函数时,若传递的第二个参数是string类型,应该怎么办?
发表于:2008-01-19 13:06:37 楼主
调用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'
这个问题该如何解决,希望高手给予帮助,谢谢!
发表于:2008-01-19 16:25:401楼 得分:0
@data[1]即可
发表于:2008-01-19 20:27:232楼 得分:0
pchar(data)与@data[1]都可以,,
你的错误可能以下原因引起是:
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)释放
发表于:2008-01-19 20:49:333楼 得分:0
neweipeng:
你好,pchar(data)与@data[1]我都用过,可还是提示一样的错误啊,不定我没用setlength(buf_list[stringgrid1.rowcount-2].buf       ,0)释放,是不是和这个有关?
这句话用在什么地方,还望赐教!
发表于:2008-01-21 14:59:254楼 得分:0
非常感谢大家的回复,尤其是neweipeng!  
此问题已经解决了,原因是我只给buf_list二维数组的第二维分配大小,没有给第一维分配大小,呵呵,才学习编程,很多东西都不懂,还望大家以后多多帮忙!我没有分,也不能给你们加分了,不好意思啊


快速检索

最新资讯
热门点击