使用包(Package)技术实现动态加载MDI子窗口,不同于一般的DLL技术(存在很大的限制和隐患),开题换分(7分)

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

LiChaoHui

Unregistered / Unconfirmed
GUEST, unregistred user!
参见http://www.delphibbs.com/delphibbs/dispq.asp?lid=1508929

如果你要将不同的模块编译到动态链接库中,
主模块根据需要调用不同的模块,这样可以节省内存,
但是将MDI包含在动态链接库中的时候,却有很大的技术困难
难在如何调用(如果尝试过这种方法的人,肯定知道所遇到的麻烦),

经过摸索和实践,我发现了一种通过包来实现这种目的的方法。
包是Delphi中的动态链接库,比一般的动态链接库在面向对象上有更大的优势
同时,可以大大减小动态模块的编译体积,基本没有什么限制,
也没有什么副作用,实现方法简单,只需要注意几点就可以了
现用此技术来换取分数,开帖50分,送上我的测试程序

下面是关于控制对象的运行时信息的方法
就是控制Delphi程序的运行时信息

譬如,我知道某个类的类名和属性的名称,
我也可以创建这个类并修改它的属性,
我的演示程序里有根据类名称创建类实例的方法,
下面写出访问知道名字的属性的方法
需引用 TypInfo 单元
假设 MyObj 是通过上面的方法创建的对象
他的两个字符串类型的属性分别为 MyProperty1 和 MyProperty2
下面读取MyProperty1 并设置 MyProperty2
SetStrProp(MyObj, 'MyProperty1', 'test1');
vStr := GetStrProp(MyObj, 'MyProperty2');

要修改的属性只能是Published的属性
只有Published的属性才有类似的运行时信息
对于不同的数据类型
TypInfo单元提供了不同的方法
 
不懂,帮忙t
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1526673
进去拿分吧:D
thks
 
好深奥哦!怎么跟你昨天晚上说的不太一样?
 
思路是一样的,我重写了一个演示程序,这一次方法已经很成熟了
欢迎索取(50分换取,先看再给分亦可,如果觉得亏,返还分数)
 
昨天的各位朋友,我已经将新的程序发送过了,
新的程序可以动态调用两个模块中的MDI子窗口,
代码也更简单,如果有谁用这种方法编写大的系统,欢迎切磋

另:
看来对于大多数程序,都不需要访问对象的运行时属性,
但对于其他模块新定义的类也许会很有用的
 
喜欢BPL!!!!!!!
 
这个也来换分啊?

我用包用了几年了。
不懂的人可以看看这个:
http://www2.borland.com.tw/tw/reference9.html
 
和我的方法差不多啊,不过我可是自己摸索出来的
 
兄弟,佩服你!

我都是从书上学来的。
 
没有人感兴趣吗?
 
http://www2.borland.com.tw/tw/reference9.html
有详细的介绍,繁体的,
这里有一个例子程序,也许会更有用
 
谁有一个完整的example,我也需要,thanks
 
说过了,开贴50分,我就发送
如果每人要,我就结帖了
 
这里有for d3的demo下载 不要分的[:D],自己编译一下
http://xuhao23.myetang.com/yuanma.htm
PKGDEMO.ZIP
http://xuhao23.myetang.com/ym/other/pkgdemo.zip
简介:示范如何运行时刻自行控制、动态载入使用 Delphi 3 Run-Time Package
另 ID:642584 帖有比较详细的讨论

 
哈哈,这个例子未免也太简单了吧?
我的例子是比较完美的,MDI子窗口解决方法,
很值得一看,我一看了别的讨论,但都没有我的这个好,
也是最终解决方法!
虽然代码和方法很简单,但是说明的是一种思路和方法

我说过了,如果不满意,我可以退还全部分数,决不反悔
 
是否可以将程序发给我,加你分,谢谢:paul.kan@163.net
 
OK,
先发给你,你觉得好,就给我分,
觉得不好就算了
 
顶部