关于PChar长度太短的问题

EastonSoft 2011-07-04 10:47:10
我现在需要写一个 函数,然后将函数封装到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.
...全文
505 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenfeng1016 2013-06-27
  • 打赏
  • 举报
回复
或是取到的值是空值
shenfeng1016 2013-06-27
  • 打赏
  • 举报
回复
楼主有解决吗,我也遇到这样的问题,我是.net 调用delphi的动态库,pchar赋值长度过长就会报错
伊吹萃香 2011-07-23
  • 打赏
  • 举报
回复
因为string的内存管理不大一样。
lwm08106542000 2011-07-23
  • 打赏
  • 举报
回复
... 无语了,加QQ群 32143041
EastonSoft 2011-07-23
  • 打赏
  • 举报
回复
function DllFun(a,b,c:Pchar):Pchar;stdcall;
var
_a, _b, _c: string;
begin
_a:= string(a);
_b:= string(b);
_c:= string(c);

....

我的DLL里面是这样写的。如果把Pchar换成string可以,但是关闭程序的时候会出错,我写的DLL要通用的,C/C++也要可以用。所以我必须使用Pchar。
ADSLAN 2011-07-05
  • 打赏
  • 举报
回复
肯定是没有分配内存吧 Pchar不能直接用
「已注销」 2011-07-05
  • 打赏
  • 举报
回复
我以前用PCHAR也报错了,后来分配了一下内存就好了
Response:PChar;
GetMem(response,4200) ;
FreeMem(Response);
这样就没问题
纯冰糖 2011-07-05
  • 打赏
  • 举报
回复
把那个函数取出来,在主程序里调试一下。
五哥 2011-07-05
  • 打赏
  • 举报
回复
pChar怎么会不够,pChar是字符指针,只是给过去一个地址,函数中会自动去读那个地址开始的数据;

把Form里面定义的String 也定义成pChar试试 ;

你这个错误是访问无效内存地址啦,你跟踪调试一下,看看运行到什么地方报的错 。
纯冰糖 2011-07-05
  • 打赏
  • 举报
回复
var
p:array[0..1023]of char;
...
ZeroMemory(@P,1024);

再试试
yqdragon 2011-07-04
  • 打赏
  • 举报
回复
PChar的长度不够?
不会吧,你要处理多长

先把DLL中的函数移到主Form中看有无问题,是不是其它错误问题造成的
随着通信电子技术的迅速发展,信息技术给家居行业产生了深远的影响,家居环境的智能化监控已经成为智能家居的一个重要的发展方向。人们逐渐对自己的生活提出一种更高的要求,他们需要一种智能化、可交互,并且融合现代创新科技的产品来改善他们的生活环境,使他们生活更加安全、舒适、便捷、智能。本文根据智能家居的发展背景和研究现状,并且从实用性和可行性角度出发,研究设计了一种基于STM32单片机的智能家居系统。该系统由一个多功能综合的技术系统组成,各个多功能子系统间具有协同配合能力。基于STM32单片机实现的功能子系统包括:智能温度检测,智能湿度检测,智能烟雾/火灾检测智能检测,无线传输,人机交互机构,风扇调节,报警模块。 整个系统分为前端51单片机采集板和后端STM32单片机接收板。 采集板使用DHT11温湿度传感器、MQ烟雾传感器完成室内家居环境的采集。然后通过nRFL24L01将采集到的数据发送给后端。接收板使用LCD1602完成数据显示、使用蜂鸣器模块报警,使用风扇驱动模块调节室内家居环境。本文完成了智能家居控制系统前端、后端软硬件的设计,使用Altium designer绘制了电路原理图,使用Keil C完成了51单片机和STM32单片机的编程与调试。 最后,对本文设计的基于STM32的智能家居控制系统进行部署调试。试验结果表明,该系统可成功应用在智能家居环境检测调节和火灾安全防护的领域,可提高家居生活智能化水平。

5,943

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧