关于PChar长度太短的问题
本帖最后由 EastonSoft 于 2011-07-04 22:49:55 编辑 我现在需要写一个 函数,然后将函数封装到DLL里面,在Form里面我的字符串是使用string,但是DLL里面我使用PChar后就会出现错误。后来我发现是PChar的长度不够。
函数如下:
function fun(Html:PChar):PChar;stdcall;
我在delphi里面另外做一个窗体项目,然后调用这个DLL里面的fun函数就会出现错误。我需要处理比较长的字符串,所以我现在不知道该怎么办。我的函数是用来处理HTML页面的,我需要将HTML代码传入函数。
错误代码Access violation at address 0040404B in module 'Project1.exe'. Read of address 01D39358.
[解决办法]
PChar的长度不够?
不会吧,你要处理多长
先把DLL中的函数移到主Form中看有无问题,是不是其它错误问题造成的
[解决办法]
var
p:array[0..1023]of char;
...
ZeroMemory(@P,1024);
再试试
[解决办法]
pChar怎么会不够,pChar是字符指针,只是给过去一个地址,函数中会自动去读那个地址开始的数据;
把Form里面定义的String 也定义成pChar试试 ;
你这个错误是访问无效内存地址啦,你跟踪调试一下,看看运行到什么地方报的错 。
[解决办法]
我以前用PCHAR也报错了,后来分配了一下内存就好了
Response:PChar;
GetMem(response,4200) ;
FreeMem(Response);
这样就没问题
[解决办法]
肯定是没有分配内存吧 Pchar不能直接用
[解决办法]
因为string的内存管理不大一样。