风
风逍遥
Unregistered / Unconfirmed
GUEST, unregistred user!
ykn29:你好
我觉得在国7里面本来没有很多事做,很无聊。如果事情很多,干了还觉得难过,因为没有任何报酬。所以在单位搞点编程,实在是
应付一下而已。谈不上学了多少。我们单位很大,但我们只是一个小部门,没有人(至少我认识的)懂delphi。我们单位的应用不大,
所以也不需要多么复杂的系统。现在他们还使用dos下的foxpro和雅奇编程和维护。最早我也用雅奇,后来用Vfp,再后来就用BCB(因
为起先学的c语言)。但后来接触delphi后,发现它比BCB更有效率,于是就全面使用delphi。学delphi只是兴趣而已,学多层也更是因为
兴趣。另一个原因就是我以前用Vfp写的模块运行速度越来越慢。使用多层后速度很快。
我的多层实际也就是三层,并且也没有使用数据库服务器。使用的数据库为foxpro(因为他们用foxpro)和paradox,这些数据库和应用
服务器放在NT网络的主域控制器计算机上。客户程序则放在各部门业务处理计算机上。系统运行很稳定,1年多了,没有出过什么问题,
并且我的delphi还是我自己买的盗版的(我们单位就这么混蛋,所以那有心思多做事)。
个人认为:客户端使用TSocketConnection连接服务器比较好,简单不需要配置。使用这种方式一定要用IP地址,因为它比使用HostName
快。你说的问题我好像也遇到过,我用了这样两个办法解决,第一:在服务器所在计算机上用delphi编译一下。第二:将应用服务器在所在的
计算机注册。第1种办法对你来说显然不行(除非救急)。第二种办法比较麻烦,要编写一段代码。现提供注册代码,相信你一看就明白。
procedure TFmRegSer.Button1Click(Sender: TObject);
var reg:tregistry;
begin
reg:=Tregistry.Create;
reg.RootKey:=HKEY_CLASSES_ROOT;
//注册服务器
if reg.OpenKey('CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}',true) then
begin
reg.WriteString('AppID','{37FA5843-4145-11D5-9A65-00104B17A566}');
reg.WriteString('Sockets','1');
reg.WriteString('Web','1');
reg.WriteString('(默认)','SRDM Object');
end;
reg.CloseKey;
if reg.OpenKey('CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}/LocalServer32',true) then
reg.WriteString('(默认)','E:/W_DX/SDX.EXE');
reg.CloseKey;
if reg.OpenKey('CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}/ProgID',true) then
reg.WriteString('(默认)','sdx.SRDM');
reg.CloseKey;
if reg.OpenKey('CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}/TypeLib',true) then
reg.WriteString('(默认)','{37FA5840-4145-11D5-9A65-00104B17A566}');
reg.CloseKey;
if reg.OpenKey('CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}/Version',true) then
reg.WriteString('(默认)','1.0');
//注册AppID
reg.CloseKey;
if reg.OpenKey('AppID/{37FA5843-4145-11D5-9A65-00104B17A566}',true) then
reg.WriteString('(默认)','SRDM Object');
//注册接口
reg.CloseKey;
if reg.OpenKey('Interface/{37FA5841-4145-11D5-9A65-00104B17A566}',true) then
reg.WriteString('(默认)','ISRDM');
reg.CloseKey;
if reg.OpenKey('Interface/{37FA5841-4145-11D5-9A65-00104B17A566}/ProxyStubClsid',true) then
reg.WriteString('(默认)','{00020424-0000-0000-C000-000000000046}');
reg.CloseKey;
if reg.OpenKey('Interface/{37FA5841-4145-11D5-9A65-00104B17A566}/ProxyStubClsid32',true) then
reg.WriteString('(默认)','{00020424-0000-0000-C000-000000000046}');
reg.CloseKey;
if reg.OpenKey('Interface/{37FA5841-4145-11D5-9A65-00104B17A566}/TypeLib',true) then
begin
reg.WriteString('(默认)','{37FA5840-4145-11D5-9A65-00104B17A566}');
reg.WriteString('Version','1.0');
end;
//注册类型库
reg.CloseKey;
if reg.OpenKey('TypeLib/{37FA5840-4145-11D5-9A65-00104B17A566}/1.0',true) then
reg.WriteString('(默认)','Project1 Library');
reg.CloseKey;
if reg.OpenKey('TypeLib/{37FA5840-4145-11D5-9A65-00104B17A566}/1.0/0/win32',true) then
reg.WriteString('(默认)','E:/W_DX/SDX.EXE');
reg.CloseKey;
if reg.OpenKey('TypeLib/{37FA5840-4145-11D5-9A65-00104B17A566}/1.0/FLAGS',true) then
reg.WriteString('(默认)','0');
reg.CloseKey;
if reg.OpenKey('TypeLib/{37FA5840-4145-11D5-9A65-00104B17A566}/1.0/HELPDIR',true) then
reg.WriteString('(默认)','E:/W_DX');
////////////
reg.CloseKey;
reg.RootKey:=HKEY_LOCAL_MACHINE;
//注册服务器
if reg.OpenKey('Software/CLASSES/CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}',true) then
begin
reg.WriteString('AppID','{37FA5843-4145-11D5-9A65-00104B17A566}');
reg.WriteString('Sockets','1');
reg.WriteString('Web','1');
reg.WriteString('(默认)','SRDM Object');
end;
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}/LocalServer32',true) then
reg.WriteString('(默认)','E:/W_DX/SDX.EXE');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}/ProgID',true) then
reg.WriteString('(默认)','sdx.SRDM');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}/TypeLib',true) then
reg.WriteString('(默认)','{37FA5840-4145-11D5-9A65-00104B17A566}');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}/Version',true) then
reg.WriteString('(默认)','1.0');
//注册AppID
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/AppID/{37FA5843-4145-11D5-9A65-00104B17A566}',true) then
reg.WriteString('(默认)','SRDM Object');
//注册接口
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/Interface/{37FA5841-4145-11D5-9A65-00104B17A566}',true) then
reg.WriteString('(默认)','ISRDM');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/Interface/{37FA5841-4145-11D5-9A65-00104B17A566}/ProxyStubClsid',true) then
reg.WriteString('(默认)','{00020424-0000-0000-C000-000000000046}');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/Interface/{37FA5841-4145-11D5-9A65-00104B17A566}/ProxyStubClsid32',true) then
reg.WriteString('(默认)','{00020424-0000-0000-C000-000000000046}');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/Interface/{37FA5841-4145-11D5-9A65-00104B17A566}/TypeLib',true) then
begin
reg.WriteString('(默认)','{37FA5840-4145-11D5-9A65-00104B17A566}');
reg.WriteString('Version','1.0');
end;
//注册类型库
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/TypeLib/{37FA5840-4145-11D5-9A65-00104B17A566}/1.0',true) then
reg.WriteString('(默认)','Project1 Library');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/TypeLib/{37FA5840-4145-11D5-9A65-00104B17A566}/1.0/0/win32',true) then
reg.WriteString('(默认)','E:/W_DX/SDX.EXE');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/TypeLib/{37FA5840-4145-11D5-9A65-00104B17A566}/1.0/FLAGS',true) then
reg.WriteString('(默认)','0');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/TypeLib/{37FA5840-4145-11D5-9A65-00104B17A566}/1.0/HELPDIR',true) then
reg.WriteString('(默认)','E:/W_DX');
reg.CloseKey;
reg.Free;
button1.Enabled:=false;
application.MessageBox('注册完成!','注册服务器',MB_OK);
end;
你要根据你的应用服务器名称和相应的GUID修改以上代码后就可以了。当然你也可以修改成通用服务器注册器。
这一部分工作我还没有做(懒得做)。
最后祝你事业有成!
风逍遥
我觉得在国7里面本来没有很多事做,很无聊。如果事情很多,干了还觉得难过,因为没有任何报酬。所以在单位搞点编程,实在是
应付一下而已。谈不上学了多少。我们单位很大,但我们只是一个小部门,没有人(至少我认识的)懂delphi。我们单位的应用不大,
所以也不需要多么复杂的系统。现在他们还使用dos下的foxpro和雅奇编程和维护。最早我也用雅奇,后来用Vfp,再后来就用BCB(因
为起先学的c语言)。但后来接触delphi后,发现它比BCB更有效率,于是就全面使用delphi。学delphi只是兴趣而已,学多层也更是因为
兴趣。另一个原因就是我以前用Vfp写的模块运行速度越来越慢。使用多层后速度很快。
我的多层实际也就是三层,并且也没有使用数据库服务器。使用的数据库为foxpro(因为他们用foxpro)和paradox,这些数据库和应用
服务器放在NT网络的主域控制器计算机上。客户程序则放在各部门业务处理计算机上。系统运行很稳定,1年多了,没有出过什么问题,
并且我的delphi还是我自己买的盗版的(我们单位就这么混蛋,所以那有心思多做事)。
个人认为:客户端使用TSocketConnection连接服务器比较好,简单不需要配置。使用这种方式一定要用IP地址,因为它比使用HostName
快。你说的问题我好像也遇到过,我用了这样两个办法解决,第一:在服务器所在计算机上用delphi编译一下。第二:将应用服务器在所在的
计算机注册。第1种办法对你来说显然不行(除非救急)。第二种办法比较麻烦,要编写一段代码。现提供注册代码,相信你一看就明白。
procedure TFmRegSer.Button1Click(Sender: TObject);
var reg:tregistry;
begin
reg:=Tregistry.Create;
reg.RootKey:=HKEY_CLASSES_ROOT;
//注册服务器
if reg.OpenKey('CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}',true) then
begin
reg.WriteString('AppID','{37FA5843-4145-11D5-9A65-00104B17A566}');
reg.WriteString('Sockets','1');
reg.WriteString('Web','1');
reg.WriteString('(默认)','SRDM Object');
end;
reg.CloseKey;
if reg.OpenKey('CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}/LocalServer32',true) then
reg.WriteString('(默认)','E:/W_DX/SDX.EXE');
reg.CloseKey;
if reg.OpenKey('CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}/ProgID',true) then
reg.WriteString('(默认)','sdx.SRDM');
reg.CloseKey;
if reg.OpenKey('CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}/TypeLib',true) then
reg.WriteString('(默认)','{37FA5840-4145-11D5-9A65-00104B17A566}');
reg.CloseKey;
if reg.OpenKey('CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}/Version',true) then
reg.WriteString('(默认)','1.0');
//注册AppID
reg.CloseKey;
if reg.OpenKey('AppID/{37FA5843-4145-11D5-9A65-00104B17A566}',true) then
reg.WriteString('(默认)','SRDM Object');
//注册接口
reg.CloseKey;
if reg.OpenKey('Interface/{37FA5841-4145-11D5-9A65-00104B17A566}',true) then
reg.WriteString('(默认)','ISRDM');
reg.CloseKey;
if reg.OpenKey('Interface/{37FA5841-4145-11D5-9A65-00104B17A566}/ProxyStubClsid',true) then
reg.WriteString('(默认)','{00020424-0000-0000-C000-000000000046}');
reg.CloseKey;
if reg.OpenKey('Interface/{37FA5841-4145-11D5-9A65-00104B17A566}/ProxyStubClsid32',true) then
reg.WriteString('(默认)','{00020424-0000-0000-C000-000000000046}');
reg.CloseKey;
if reg.OpenKey('Interface/{37FA5841-4145-11D5-9A65-00104B17A566}/TypeLib',true) then
begin
reg.WriteString('(默认)','{37FA5840-4145-11D5-9A65-00104B17A566}');
reg.WriteString('Version','1.0');
end;
//注册类型库
reg.CloseKey;
if reg.OpenKey('TypeLib/{37FA5840-4145-11D5-9A65-00104B17A566}/1.0',true) then
reg.WriteString('(默认)','Project1 Library');
reg.CloseKey;
if reg.OpenKey('TypeLib/{37FA5840-4145-11D5-9A65-00104B17A566}/1.0/0/win32',true) then
reg.WriteString('(默认)','E:/W_DX/SDX.EXE');
reg.CloseKey;
if reg.OpenKey('TypeLib/{37FA5840-4145-11D5-9A65-00104B17A566}/1.0/FLAGS',true) then
reg.WriteString('(默认)','0');
reg.CloseKey;
if reg.OpenKey('TypeLib/{37FA5840-4145-11D5-9A65-00104B17A566}/1.0/HELPDIR',true) then
reg.WriteString('(默认)','E:/W_DX');
////////////
reg.CloseKey;
reg.RootKey:=HKEY_LOCAL_MACHINE;
//注册服务器
if reg.OpenKey('Software/CLASSES/CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}',true) then
begin
reg.WriteString('AppID','{37FA5843-4145-11D5-9A65-00104B17A566}');
reg.WriteString('Sockets','1');
reg.WriteString('Web','1');
reg.WriteString('(默认)','SRDM Object');
end;
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}/LocalServer32',true) then
reg.WriteString('(默认)','E:/W_DX/SDX.EXE');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}/ProgID',true) then
reg.WriteString('(默认)','sdx.SRDM');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}/TypeLib',true) then
reg.WriteString('(默认)','{37FA5840-4145-11D5-9A65-00104B17A566}');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/CLSID/{37FA5843-4145-11D5-9A65-00104B17A566}/Version',true) then
reg.WriteString('(默认)','1.0');
//注册AppID
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/AppID/{37FA5843-4145-11D5-9A65-00104B17A566}',true) then
reg.WriteString('(默认)','SRDM Object');
//注册接口
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/Interface/{37FA5841-4145-11D5-9A65-00104B17A566}',true) then
reg.WriteString('(默认)','ISRDM');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/Interface/{37FA5841-4145-11D5-9A65-00104B17A566}/ProxyStubClsid',true) then
reg.WriteString('(默认)','{00020424-0000-0000-C000-000000000046}');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/Interface/{37FA5841-4145-11D5-9A65-00104B17A566}/ProxyStubClsid32',true) then
reg.WriteString('(默认)','{00020424-0000-0000-C000-000000000046}');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/Interface/{37FA5841-4145-11D5-9A65-00104B17A566}/TypeLib',true) then
begin
reg.WriteString('(默认)','{37FA5840-4145-11D5-9A65-00104B17A566}');
reg.WriteString('Version','1.0');
end;
//注册类型库
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/TypeLib/{37FA5840-4145-11D5-9A65-00104B17A566}/1.0',true) then
reg.WriteString('(默认)','Project1 Library');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/TypeLib/{37FA5840-4145-11D5-9A65-00104B17A566}/1.0/0/win32',true) then
reg.WriteString('(默认)','E:/W_DX/SDX.EXE');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/TypeLib/{37FA5840-4145-11D5-9A65-00104B17A566}/1.0/FLAGS',true) then
reg.WriteString('(默认)','0');
reg.CloseKey;
if reg.OpenKey('Software/CLASSES/TypeLib/{37FA5840-4145-11D5-9A65-00104B17A566}/1.0/HELPDIR',true) then
reg.WriteString('(默认)','E:/W_DX');
reg.CloseKey;
reg.Free;
button1.Enabled:=false;
application.MessageBox('注册完成!','注册服务器',MB_OK);
end;
你要根据你的应用服务器名称和相应的GUID修改以上代码后就可以了。当然你也可以修改成通用服务器注册器。
这一部分工作我还没有做(懒得做)。
最后祝你事业有成!
风逍遥