关于动态调用package的一个疑问?(300分)

  • 主题发起人 主题发起人 cAkk
  • 开始时间 开始时间
C

cAkk

Unregistered / Unconfirmed
GUEST, unregistred user!
我想通过动态调入package的方法实现类似plug-ins的效果,但是
在package中怎样得到主程序中的一些变量的值?
比如我的主form:

type
tform1=class(tform)
...
public
abc:integer;
end;

那么在package里面如何得到主form的abc的值呢?
活着有什么别的方式能够实现package访问主程序的一些变量?
 
不知道你有什么特别的疑问,Package 既然是一个对象实体的封装,就要用 OO 的方法和外界
发生关系,比如在 Package 的 Interface 部分定义入口函数或对象指针,外部程序通过入口函
数的参数把一些数据传入或传出,这是最一般的做法,我想不用说你也知道,是不是有什么特殊
的应用要求要这样做呢?
 
外部程序如何知道package里面有哪些入口函数呢? 换句话说,外部程如何知道
package里面有哪些成员变量需要初始化呢?
 
类内只有 property 才能运行时知道。

全局变量初始化是装入模块时系统来做(初始化值在exe、dll、bpl文件中的对应数据段中保存)

 
我定义在public部分的是<B>全局</b>变量吗? 好像C++不是这样的.

Pipi有什么办法实现我的要求?
 
一个 Package 的接口肯定是要有约束的。
如果把 Package 类比为一个 Class ,如何使用 Class 的属性、方法肯定会提供使用规范啊,
比如你使用 TButton ,你是怎么知道它有 Caption 属性?还不是 Delphi 的文档和约定。
即使是一个 COM 对象,也还是要 QueryInterface 去试探它是否支持一个已知的接口,如果
支持,那么就可以使用这个返回值调用接口的一些方法,但是这些方法肯定是你已经知道的,如
果是没有公开的方法,也还是没办法调用的。
使用 Delphi 的 RTTI 只能得到 Published 的成员,Public 还是没有办法得到。
定义在 Public 部分的只是类的公共变量,每一个类的实例都拥有一份拷贝,不能称之为全局
变量,Delphi 中全局变量可以在 Interface 的 Var 中定义。
Right ?
 
多人接受答案了。
 
后退
顶部