冰 冰火 Unregistered / Unconfirmed GUEST, unregistred user! 2001-07-11 #1 我遇到以下问题,请高手解答:<br>我在Delphi的一个应用程序中调用一个我用Delphi开发的DLL中的函数,传递一个String进去,<br>我需要在该DLL中扩展该String的长度,改写其内容,然后安全地传出。<br>请各位解答,需要两方面的代码(应用程序端和DLL端)
我遇到以下问题,请高手解答:<br>我在Delphi的一个应用程序中调用一个我用Delphi开发的DLL中的函数,传递一个String进去,<br>我需要在该DLL中扩展该String的长度,改写其内容,然后安全地传出。<br>请各位解答,需要两方面的代码(应用程序端和DLL端)
Y yzdiyu Unregistered / Unconfirmed GUEST, unregistred user! 2001-07-13 #3 用pchar<br>不就解决了吗,<br>还可以和c互相调用
M micony Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-09 #4 在DLL编程中一般使用PChar和Shorstring来传递字符串信息(避免使用Borlanmm.dll,其实<br>就是避免uses ShareMerm单元)<br>将string转化成PChar可以如下:<br>var str:string;<br><br> setlength(str,256);//一定要给str分配空间<br>然后就可以用PChar(str)去做你的参数了,因为pchar(str)就是一pchar<br>扩展string的长度可以用setlength呀<br>扩展pchar的长度可以用strlen()<br>例如strlen(s,256);<br>不知道这是不是你想要的
在DLL编程中一般使用PChar和Shorstring来传递字符串信息(避免使用Borlanmm.dll,其实<br>就是避免uses ShareMerm单元)<br>将string转化成PChar可以如下:<br>var str:string;<br><br> setlength(str,256);//一定要给str分配空间<br>然后就可以用PChar(str)去做你的参数了,因为pchar(str)就是一pchar<br>扩展string的长度可以用setlength呀<br>扩展pchar的长度可以用strlen()<br>例如strlen(s,256);<br>不知道这是不是你想要的
G gcq Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-10 #7 哦,<br>ShortString 255 characters 2 to 256 bytes backward compatibility<br>AnsiString ~2^31 characters 4 bytes to 2GB 8-bit (ANSI) characters<br>WideString ~2^30 characters 4 bytes to 2GB Unicode characters; <br><br>看你STRING的内容有多少了,如果就这么点当然不会出问题!呵呵<br>
哦,<br>ShortString 255 characters 2 to 256 bytes backward compatibility<br>AnsiString ~2^31 characters 4 bytes to 2GB 8-bit (ANSI) characters<br>WideString ~2^30 characters 4 bytes to 2GB Unicode characters; <br><br>看你STRING的内容有多少了,如果就这么点当然不会出问题!呵呵<br>
冰 冰火 Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-10 #8 不好意思,各位,这段时间忙别的事情去了。<br>这个问题我已经解决了,用Delphi嵌入汇编解决的,只要两行代码就搞定了。<br><br>事实上我没有把问题说清,怪我,呵呵。<br>这个DLL有可能是别人写的,所以有些地方是超出了我的控制的。<br>在DLL中改变传入参数(Buffer)的大小是会出错的,尤其是用C写的DLL。<br>不管是在DLL总重新分配一段内存还是改变原来内存的大小,这也是C在传入Buffer时<br>一定要另传一个长度值的原因,请各位明鉴。<br><br>不管怎样,非常感谢大家的帮助。<br>最近上网不大方便,耽误了大家取分,抱歉。<br>以后我会抽机会常来的,也请大家多帮忙,大家共同进步。<br>谢了。
不好意思,各位,这段时间忙别的事情去了。<br>这个问题我已经解决了,用Delphi嵌入汇编解决的,只要两行代码就搞定了。<br><br>事实上我没有把问题说清,怪我,呵呵。<br>这个DLL有可能是别人写的,所以有些地方是超出了我的控制的。<br>在DLL中改变传入参数(Buffer)的大小是会出错的,尤其是用C写的DLL。<br>不管是在DLL总重新分配一段内存还是改变原来内存的大小,这也是C在传入Buffer时<br>一定要另传一个长度值的原因,请各位明鉴。<br><br>不管怎样,非常感谢大家的帮助。<br>最近上网不大方便,耽误了大家取分,抱歉。<br>以后我会抽机会常来的,也请大家多帮忙,大家共同进步。<br>谢了。