今天用Delphi2007新建了一个TRemoteDataModule的多层服务端,编译后发现不能自动完成注册。在网上找到了答案希望对大家有用。
我们新建一个TRemoteDataModule时会自动添加以下代码:
如果注册后无法确认是否注册成功,可以用C:"WINNT"Regedit.exe检查(没查过)。
class procedure TRDM.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string);
begin
if Register then
begin
inherited UpdateRegistry(Register, ClassID, ProgID);
EnableSocketTransport(ClassID);
EnableWebTransport(ClassID);
end else
begin
DisableSocketTransport(ClassID);
DisableWebTransport(ClassID);
inherited UpdateRegistry(Register, ClassID, ProgID);
end;
end;
initialization
TComponentFactory.Create(ComServer, TRDM,
Class_RDM, ciMultiInstance, tmApartment);
end.
以上代码Delphi7编译后可以完成注册,但是Delphi2007不会自动注册,需要手动添加代码ComServer.UpdateRegistry(true);完成注册。将单元的Initialization改为以下代码即可。
initialization
TComponentFactory.Create(ComServer, TSuperRed,
Class_SuperRed, ciMultiInstance, tmApartment);
ComServer.UpdateRegistry(true);//添加该行语句完成注册
本文介绍了使用Delphi2007创建TRemoteDataModule时遇到的自动注册问题及解决方案。通过手动添加ComServer.UpdateRegistry(true)语句到初始化部分,确保组件正确注册。
2万+

被折叠的 条评论
为什么被折叠?



