如何在程序中改变BDE的CFG文件(100分)

  • 主题发起人 主题发起人 小天
  • 开始时间 开始时间

小天

Unregistered / Unconfirmed
GUEST, unregistred user!
我需要用BDE设置两个指向,一个指向NT网络映射盘的SQL数据库,别一个指向本地盘的paradox数据库,分别保存在映射盘和本地盘上的IDAPI.CFG文件中。
我想请问,在程序中我如何才能动态切换这两个CFG文件呢?
 
你用同一个cfg文件, 用两个alias不是可以吗? 难道有什么冲突?
 
不行,我们做系统,要在本地装同一个alias,又要在网络上装同一个alias
 
你不需要去修改cfg文件,只是需要两个AliasName
在访问Paradox数据库时,只需要将
Session.NetFileDir:=数据所在目录
如果有非法退出情况需要将数据目录的*.lck文件删除
你才能连上数据库。
如果你使用本地Paradox数据库是作为临时库的化,建议
你改用MemeryTable。
 
???
好奇怪的思路,理论上说通过BDE API是可以的//参阅有关手册
流氓方法嘛:LOG--RENAME:-)))
不过为什么不写两个ALIAS呢?localXXX,RemoteXXX
在程序里
if need local then
database1.alias := localxxx;//is this property right?
else
...
 
是这个样子的啦,我们有一个系统安装后BDE自动调用网络盘上的CFG文件。现在老板又要求做单机、本地两用版。也就是说,单机用时,BDE指向c:/AA,网络用时指向f:/AA(网络盘),由于我们原系统的文件是调用F盘上的,我们总不能在F盘上的那个CFG文件中设多个C:/AA吧。所以我想使用在使用过程动态切换CFG文件。
 
你们的程序既然能够自动调用网络盘上的CFG文件, 为什么就不会改一下去自动
调用本地的CFG文件呢? 太奇怪了!
 
wuyi:应该是用另一个程序设置,就像BDE ADMIN32那样
小天:我玩不转,如果对查HELP不感冒,可以参考BDE API HELP//DELPHI有
要么,RENAME
 
这样做吧
方法一、建立两个别名,程序里使用Database控件提供的虚拟别名。在
程序进入时确认是使用网络还是单机,判断Database.AliasName是什么。
这样的话程序改动最小。(Session.NetFileDir=XXX当然少不了)
方法二、使用编译指令,干脆编译两套程序,两个图标,由用户自己选择。

另外有一点需要补充:
如果你的Paradox数据库放在NT上,千万千万要注意用户机(Win95/98)网卡不能
绑定除了IPX以外的网络协议,否则数据库正在工作时,工作RESET数据库索引
一定坏。用95或NetWare作服务器则没有这个问题
 
colinyan:你的补充太棒了,谢谢你了。不过编译两个程序嘛,那那那会不会
很麻烦?要写两套也。
CJ:呵呵我就知道你会说出些文的东东啦,不过有总比没有好,那那那BDE API HELP
在DELPHI中的哪呢?
 
精彩?faint!
写两个程序绝对不如改程序简单!
实际上写两个程序还设置两个别名,不如直接改程序,判断网络连接(用PING的)
如果已经连接,则用NETALIAS否则NATIVEALIAS,改变很简单,改变所有TDATABASE
的就可以,不过问题还没解决呀?如果让拥护选择,只要给个用户参数即可,何必写
两个程序呢?
DELPHI4/BDE/有HELP的,好象D3的程序组里也有
>我就知道你会说出些文的东东啦
什么意思?
 
使用编译指令的好处就在差不多的程序无需写几套
例如:网络版/单机版/使用版等等,下面我给一个简
单的例子.

{$IFDEF NET}
Database1.AliasName:='My_NetAlias'; //-----Line1
{$ELSE}
Database1.AliasName:='My_Alias'; //-----Line2
{$ENDIF}

如果你定义了NET,那么DELPHI会自动编译Line1而不会
编译Line2,如果没有定义NET系统会不编译Line1,而去
编译Line2.怎么样,和写程序差不多把,建议你去参看
RxLib的原码,你可以学到很多.例如Net在哪里定义

顺便说一句,如果你定义的Net是全程使用(即有可能再任何
一个过程里使用)你可以在Project菜单中的Option里
选择Directoris/Condtionals页,在Conditionals Defines里
填入NET即可,如果用多个变量请使用","分开.


 
如果目的是为了写多个版本,那么使用编译指令的确是个好办法
 
多人接受答案了。
 
后退
顶部