⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000020.htm

📁 水木清华关于C++Builder程序的代码
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;Zeemon&nbsp;(踏遍青山),&nbsp;信区:&nbsp;Visual&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;[CB3]CB3中的Runtime&nbsp;Package的几个用法&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Sat&nbsp;Jun&nbsp;27&nbsp;17:15:49&nbsp;1998)&nbsp;<BR>&nbsp;<BR>[CB3]CB3中的Runtime&nbsp;Package的几个用法&nbsp;<BR>&nbsp;<BR>(1)在DLL中使用主应用的数据库连接&nbsp;<BR>如果DLL的Project将project\options\package中&nbsp;<BR>&quot;Build&nbsp;with&nbsp;runtime&nbsp;packages&quot;选中,只要dll中的&nbsp;<BR>TQuery,TTable的DatabaseName和主应用程序中的一样,&nbsp;<BR>在dll中不用重新建立数据库连接就可以使用数据库了!&nbsp;<BR>如果不选&quot;Build&nbsp;with&nbsp;runtime&nbsp;packages&quot;,在dll里就&nbsp;<BR>不能直接连上数据库。&nbsp;<BR>&nbsp;<BR>当然,如果要直接使用TDatabase的一些功能,如&nbsp;<BR>StartTransaction等,还得把主应用的TDatabase&nbsp;<BR>对象的指针传到DLL里去。&nbsp;<BR>&nbsp;<BR>实际上是因为,VCLDB35和VCLDBX35通常作为缺省的&nbsp;<BR>Runtime&nbsp;Package出现在Runtime&nbsp;Package的编辑框中。&nbsp;<BR>在Build的时候,VCLDB35和VCLDBX35就作为Runtime&nbsp;&nbsp;<BR>Package了。这样,在运行时主应用程序和DLL使用的&nbsp;<BR>是同一个VCLDB35(VCLDBX35)对象,当然使用的数据库&nbsp;<BR>连接就是同一个了!就是说,DLL在被Load的时候不会&nbsp;<BR>再创建自己的VCLDB35对象和VCLDBX35对象,而与主应&nbsp;<BR>用共用一个。&nbsp;<BR>&nbsp;<BR>(2)在DLL中创建能在任务栏上出现的非模式窗口&nbsp;<BR>如果在DLL的Project中选中了&quot;Build&nbsp;with&nbsp;runtime&nbsp;&nbsp;<BR>packages&quot;,那么在DLL中创建的非模式的Form(就是&nbsp;<BR>Show而不是ShowModal出来的Form)通常不会在任务栏&nbsp;<BR>上出现。其实很简单,只需把VCL35从DLL的Runtime&nbsp;&nbsp;<BR>Package中去掉(就是不把VCL35作为Runtime&nbsp;Package),&nbsp;<BR>这些窗口就会在任务栏上出现了。&nbsp;:))&nbsp;<BR>不过这样的话,编译出来的DLL的大小会比原来增加&nbsp;<BR>400多K,那就要你自己来进行取舍了。&nbsp;<BR>&nbsp;<BR>Runtime&nbsp;Package的用法还有很多,以上只是我从实践中&nbsp;<BR>总结出来的。对于&quot;Build&nbsp;with&nbsp;runtime&nbsp;packages&quot;以及&nbsp;<BR>Runtime&nbsp;Package的使用,CB3的帮助中有一段很好的说明:&nbsp;<BR>When&nbsp;using&nbsp;packages&nbsp;all&nbsp;globals&nbsp;are&nbsp;shared&nbsp;between&nbsp;&nbsp;<BR>all&nbsp;modules&nbsp;in&nbsp;the&nbsp;process.&nbsp;&nbsp;The&nbsp;global&nbsp;Application&nbsp;&nbsp;<BR>object,&nbsp;for&nbsp;example,available&nbsp;to&nbsp;the&nbsp;package-built&nbsp;&nbsp;<BR>DLL,&nbsp;is&nbsp;the&nbsp;same&nbsp;object&nbsp;instance&nbsp;used&nbsp;by&nbsp;the&nbsp;host&nbsp;EXE,&nbsp;&nbsp;<BR>and&nbsp;all&nbsp;other&nbsp;packages.&nbsp;&nbsp;This&nbsp;is&nbsp;also&nbsp;true&nbsp;for&nbsp;the&nbsp;&nbsp;<BR>global&nbsp;clipboard,&nbsp;printer,&nbsp;standard&nbsp;I/O&nbsp;file&nbsp;handles,&nbsp;&nbsp;<BR>and&nbsp;any&nbsp;other&nbsp;global&nbsp;data.&nbsp;These&nbsp;global&nbsp;variables&nbsp;&nbsp;<BR>(but&nbsp;not&nbsp;thread&nbsp;variables)&nbsp;in&nbsp;packaged&nbsp;units&nbsp;are&nbsp;&nbsp;<BR>accessible&nbsp;anywhere&nbsp;in&nbsp;the&nbsp;application&nbsp;because&nbsp;there&nbsp;&nbsp;<BR>is&nbsp;only&nbsp;one&nbsp;copy&nbsp;of&nbsp;the&nbsp;packaged&nbsp;code&nbsp;that&nbsp;is&nbsp;shared&nbsp;&nbsp;<BR>among&nbsp;all&nbsp;modules.&nbsp;This&nbsp;includes&nbsp;other&nbsp;packages&nbsp;and&nbsp;&nbsp;<BR>the&nbsp;host&nbsp;EXE&nbsp;itself,&nbsp;thus&nbsp;creating&nbsp;a&nbsp;single&nbsp;namespace&nbsp;<BR>for&nbsp;global&nbsp;data.&nbsp;&nbsp;If&nbsp;your&nbsp;application&nbsp;uses&nbsp;VCL35,each&nbsp;&nbsp;<BR>package,&nbsp;as&nbsp;well&nbsp;as&nbsp;the&nbsp;host&nbsp;EXE,&nbsp;share&nbsp;an&nbsp;instance&nbsp;of&nbsp;&nbsp;<BR>the&nbsp;VCL&nbsp;runtime&nbsp;code.&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最后青蛙问道:&quot;为什么?我告诉过你我是一位美丽的公主,&nbsp;会与你&nbsp;<BR>共度一个星期并让你为所欲为.&nbsp;你为什么还不愿吻我?&quot;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;男孩说道:&quot;我是一个程序员.&nbsp;我没时间交GF,&nbsp;但拥有一只会说话的&nbsp;<BR>青蛙简直太酷了.&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;159.226.23.7]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -