一个函数/过程里.有几个参数.怎么知道? ( 积分: 100 )

  • 主题发起人 主题发起人 noall
  • 开始时间 开始时间
N

noall

Unregistered / Unconfirmed
GUEST, unregistred user!
1.
一个函数/过程里.有几个参数.怎么知道?

每个参数的类型又是什么...都要如何知道...

代码实现.

2.类中取函数:


如有:
ta=class
public
sum(x,y:Integer):integer;
end


那根据 字符串"sum"能知道函数sum的存在?

如果知道..又如何根据 字符串"sum" 调用 sum函数吗?
 
1 自己写的自然知道,别人写的可以问别人,或者自己反汇编跟踪。

2 无法。
 
可以实现楼主的要求,请看这里:
若干年前,beta大虾帮我们做了一个完整的例子,你照搬即可:
http://www.delphibbs.com/keylife/iblog_show.asp?xid=647
 
有那么一点点不顺...
用beta的方法可以调用得到了..就是最后的返回值:::我要返回一大串的字符串回来widestring,(在dll中实现).

用pchar传递时有时候值会不对..我用widestring来传....

怎么办呢...
 
试试 PWChar
 
在函数的返回时做如下处理就可以.
Result := AllocMem(Length(Res) + 1);
StrPCopy(Result, Res);
但这样AllocMem之后,,,有没有释放的问题? 这是申请一块内存...
 
有申请必须就有释放,否则会有内存泄露
 
请看这个贴子: 参数的传递是"巧合",,会不正确?
http://community.csdn.net/Expert/topic/5626/5626828.xml?temp=.7486536

这样我就搞不懂了....
 
看了那里的讨论,以下是个人观点:
首先, Delphi默认传参方式“优先”使用寄存器传参,不是“巧合”。
其次,delphi支持类型变化的开放式数组做参数,典型的,您使用过format函数吗?它的第二个参数就是一个开放数组,参数的类型,数量都可以随意变化。
再者,所谓“参数”,delphi有默认的传参规则,几个参数如何传递,从左到右还是从右到左等。都是有章可循的。不存在所谓不安全的问题。
 
接受答案了.
 

Similar threads

后退
顶部