这是个怪事?不信,瞧瞧,给我解解!***关于DCOM服务层动态选择服务器和SQL数据库的问题?急!!!(100分)

  • 主题发起人 主题发起人 skywin
  • 开始时间 开始时间
S

skywin

Unregistered / Unconfirmed
GUEST, unregistred user!
最近,我在用DCOM开发鞋业ERP系统,遇到这样一个问题,在服务层不能动态选择服务器和SQL数据库,
现我是这样处理的,在远程模块(Rdata)中的Create事件中加入如下代码
procedure TRdata.RemoteDataModuleCreate(Sender: TObject);
var srvini: TIniFile;
srvstrs: TStrings;
begin

srvini := TIniFile.Create('../system/config.ini');
//一个ini配置文件。以便可以任选服务器和数据库,其内容职下
//[Server Config]
//SERVER Name=HUBIN
//DATA Name=whdb


srvstrs := TStringList.Create;

srvini.ReadSectionValues('Server Config', srvstrs);

if trim(srvstrs.Values['SERVER NAME']) <> '' then begin
if whdb.Connected = false then begin
whdb.Params.Values['SERVER NAME'] := srvstrs.Values['Server Name'];
whdb.Params.Values['DATA NAME'] := srvstrs.Values['DATA Name'];
end;
end;
if whdb.Connected = false then //whdb为Tdatabase
whdb.Connected :=True;

SrvIni.Free;
srvstrs.Free;
end;

但系统好象不读config.ini中的内容,只认whdb中的SERVER NAME、DATA NAME值,高手们,请问这是为何,有何良方?
并且我还跟踪不了这个事件,为何?????

高手们,我很急啊。。。。

 
ini文件名用绝对目录看
 
高手们,睡着了吗?
 
ini的文件应该用绝对路径,我以前碰到过这样的问题,改成绝对路径就没有问题了。
你可以用extractfilepath(application.filename)得到你的当前路径,在进行操作
就可以解决了。
 
那就是读ini文件的问题了,使用注册表吧,更简单
Trege..
 
你跟踪一下不就知道了?
 
补充一点:
当你这个远程模块已经运行的时候,你用绝对路径是没有问题的。
但是当远程模块未运行,而由你来调用的时候用绝对路径就会出现你的问题。
估计是因为远程调用的时候,用相对路径有可能是相对于本机的(吓猜),但
问题的解决还是要用绝对路径。

所以为了保险起见,还是用绝对路径比较好。
 
谢谢大家的关照,我已知是何原因了。是ini文件的路径问题。
 
接受答案了.
 
后退
顶部