Pchar 数据类型(50分)

  • 主题发起人 主题发起人 ls2000
  • 开始时间 开始时间
L

ls2000

Unregistered / Unconfirmed
GUEST, unregistred user!
function Calcu(var express:pchar):double;
用delphi在编写dll的时候建议使用pchar类型的数据,因为pchar为指针类型,
它可以传递参数给用户,但是它的空间怎么分配呢?
如上面的表达式计算,假设express为传入的变量,应该在客户端分配内存空间,
但在dll里面用代码修改express(如全部大写)可能出现问题;难道我需要在dll
中复制一份express?若express为返回值,则应该在那里分配内存呢?应该在客户
端分配???
//简单的说就是windows api函数调用,一般是pchar类型的参数,我想仅仅声明一个
pchar变量,不用分配内存,能否正确调用???还是我先声明pchar变量,然后给它
分配足够的内存,再调用API函数???
 
改成function Calcu(var express:pchar;length:integer)不就行了
 
最好还是在外部分配,
zw84611的方式也是可行的
 
一个原则,凡是涉及到资源分配的一定要谁申请,谁管理,谁释放。
 
先声明再分配,再赋值(copymem等),用完释放。
 
去掉var你可以随便改呀。当然,如果长度约定好的话,是不需要length参数的。
 
如果仅作为输入参数,应该这样定义
fun(const Msg : Pchar...)
Pchar 仅仅是指向字符串的指针类型而已,相当于一个动态字符数组
 
我的意思是在调用windows api的时候,有时需要传入一个pchar参数,并且返回值给
用户,这种时候应该在外部分配内存空间,是吗?
如 function Myfunc(vl:pchar);不必要传入值,在函数内部修改vl参数后返回给用户?
这种情况是在什么时候分配vl的内存呢???

如果我编写dll给vb调用,需要传递字符串给dll的函数,给怎么编写呢??
 
对于delphi,最简单的办法是在调用方使用转换函数
strpas和strpcopy转换成内部变量运算,然后转换回去到接口
 
多人接受答案了。
 
后退
顶部