dll中一个函数可以返回字符串吗? 如果要返回字符串,这个函数应该如何整?调用的时候传啥参数? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以返回,不过当你的程序要发布是要加另一个Dll,即borland.dll,而且不能被其他语言调用,所以建议不要。返回pChar的好。这个可以通用的比如exprot function out:Pchar;stdcall; 看来只有返回pchar类型了?比如这个dll中的函数是这样的:function test():pchar;调用时,x:pchar;...x := test();这样就可以了吗?这个x是否需要初试化处理一下? 不用的。其实你X也可以是string的,它会自动转换的,但反过来就不行,反过来必须强制转换 to楼上:x声明为string,其它不变吗? 如果把pchar做为test函数的变参,不用返回字符串,那也可以得到这个字符串吧?调用时是否需要把要传入的pchar进行StrAlloc(int)?如果不用变参,用返回pchar的方法,那调用时x := test();这个x如果定义成pchar类型,需要用StrAlloc(int)手工分配内存,用strDispose()释放内存吗?如果x定义成string类型,x := test()会不会造成内存出问题? test函数中,result := pchar('字符串')和strPcopy(result,pchar('字符串'))那种方法比较安全可靠? 写dll的时候建议模仿windows api风格,pchar(char *)到底。 pchar和String类型不能直接付值 要强制类型转换 我决定用返回pchar类型的值。另有一问题请教一下,传入字符串类型的值没有关系吧?传入的参数比必要pchar类型吧? 可以不用你如果要传入字符串变参,可以这样string x; text(pchar(x));强制转换就可以了 最好用STRING,在PCHAR和STRING转化时会出问题,有时STRING转为PCHAR时会丢失字符,前面一们老兄说得对,用STRING时要带borland.dll,可能他写错了,应该是borlndmm.dll,我解释一下为什么,因为BORLAND在DLL中处理STRING是用的是BORLAND的内存(STRING是自动内存分配的)管理函数,这些函数全在Borlndmm.dll中,用过的朋友就知道了,还有理重要的一点是,在DELPHI的DLL中如果用了STRING类型,则一定要包含SHAREMEM单元并且要放在USES的第一行,这个是DELPHI的共享内存单元.另:本人已开发了一些通用DLL,愿与有兴趣的朋友一起进步 dll里面的函数使用string类型的变量应该问题不大吧? 我感觉传入pchar返回pchar比较好,证据比较充分了。不过dll里面函数是否可以定义string类型的变量,目前证据还不足。 function hhh():PChar; stdcall external 'data\hhh.dll';procedure Tform_zcm.FormCreate(Sender: TObject);begin cxTextEdit1.text:=hhh();end; 函数里面好像可以定义string类型的变量的吧? >>dll里面的函数使用string类型的变量应该问题不大吧?可以。我都是在内部使用string,只不过输入输出的时候才转为 pchar。 >>dll里面的函数使用string类型的变量应该问题不大吧?可以。我都是在内部使用string,只不过输入输出的时候才转为 pchar。 那在dll内部使用string有没有问题?输出时用pchar!? 如何实现DELPHI7中对Flash的调用 如何算2个日期的月份? 从苹果软件的难用,想起delphi的好用 请问一下idftp里可以限制上传或下载的速度吗?急用 delphi7安装 誰有POS界面(JPG文件即可)?散分! delphi越来越没人气了 请问DELPHI程序的发布问题 怎样使控件如按钮,滚动条变成平面的,用setwindowslong吗? 想结交delphi的朋友,oicq 54635707, 请教:为什么在WIN2000下显示正常的窗口,到NT下就显示不对了? 在后台触发器里管理表时出现的问题:
返回pChar的好。这个可以通用的
比如
exprot
function out:Pchar;stdcall;
比如这个dll中的函数是这样的:
function test():pchar;
调用时,
x:pchar;
...
x := test();
这样就可以了吗?这个x是否需要初试化处理一下?
反过来必须强制转换
x声明为string,其它不变吗?
调用时是否需要把要传入的pchar进行StrAlloc(int)?如果不用变参,用返回pchar的方法,那调用时x := test();
这个x如果定义成pchar类型,需要用StrAlloc(int)手工分配内存,用strDispose()释放内存吗?如果x定义成string类型,x := test()会不会造成内存出问题?
string x;
text(pchar(x));
强制转换就可以了
另:本人已开发了一些通用DLL,愿与有兴趣的朋友一起进步
不过dll里面函数是否可以定义string类型的变量,目前证据还不足。
begin
cxTextEdit1.text:=hhh();
end;