捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
主程序与DLL之间的全局变量问题
关键字:主程序 DLL 全局变量 GetProcAddress
来 自:原创
平 台:Win9x,Win2k/NT,WinXP 下载所需:0 火柴
深浅度:中级 完成时间:2004/7/23
发布者:dinkysoft 发布时间:2004/7/23
编辑器:DELPHI7 语  种:简体中文
分 类:应用软件 下载浏览:375/24055
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
无图片
作者:杨茂峰
Email:DinkySoft@163.com

有几个朋友经常向我问题在DLL中怎么共用一个全局变量。比如像用户登陆后的用户名(UserName)...
其实这个问题很简单。下面我把我的做法写出来大家一起分享。

把共享的变量放在主程序里:UserName,....等等,
在主程序里写两个函数
Function CurUserName():PChar;
begin
 Result:=pchar(UserName);
end;

procedure SetCurUserName(LoginUserName: PChar)
begin
 UserName:=LoginUserName; 
end;

然后在主程序的工程文件(*.dpr)里输出这两个函数里写
.....
{$R *.res}

exports
  CurUserName, SetCurUserName;
....

这样在每个DLL里就可以使用这两个函数了

function CurUserName: PChar; //从主程序里获取当前登陆帐号
var
  GetCurUserName: function: pchar;
begin
  @GetCurUserName := GetProcAddress(GetModuleHandle(pchar(application.Exename)), 'CurUserName');
  if Assigned(GetCurUserName) then //找到
    result := GetCurUserName
  else
    result := 'admin';
end;

上面的代码大家都可以看懂吗?如果有不明白的地方可以Email我。
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
使用BPL包实现数据、代码共享的演示
nihaoqiang 2005/11/6 下+3026/浏+19595 评+6
在DLL和主程序中使用接口实例共享变量
dinkysoft 2004/9/24 下+2563/浏+17128 评+11
主程序与DLL之间的全局变量问题
dinkysoft 2004/7/23 下+375/浏+24056 评+38
相关评论
共有评论38条 当前显示最后6条评论
cmh 2004/9/25 16:07:07
这个我没有做成功,楼主能不能做一个例子出来,
nihaoqiang 2004/11/4 20:33:22
同意tintin1943的看法,我也是用bpl的方式将程序做成许多可选插件,将公共变量,公共函数,公共类放在一个BPL包里,其他BPL只要引用该包即可随意引用这些变量函数!使用和调试都跟在一个统一的EXE程序里编程没什么两样!还可以访问到application及screen等其他系统关键对象,从而几乎可以访问到你想要访问的所有东西!

可以这么说,BPL的方式是最完美的一种共享方式,我想不出还能有什么比这种方式更完美的方式!使用VC或别的语言就不可能做到这种方式,这是Delhi的独特方式,是伟大的
Delphi的开发者们创造的奇迹!
dinkysoft 2004/11/5 8:22:58
BPL接触比较少。感觉DLL是有很多不如意的地方,如果都用Delphi来开发的话,当然BPL是首先。如果要同其它语言一起来开发,可能还是要DLL。因为其它语言(MS)的不可能也带包。
upp 2004/11/5 12:07:51
nihaoqiang 兄,不知道可不可以麻烦您共享一个bpl包制作共享的例子让我们大家学习一下,谢谢了。
nihaoqiang 2005/11/6 18:41:00
bpl包制作共享的例子我已经发到盒子上了,可能很快就会放出来了,需要了解的朋友可以看一下
hanjy 2005/12/29 1:13:09
倒过来更好理解, 在dll中定义,建立并导出函数set,get, 主程序使用.
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表