做了一个DCOM的中间层服务程序,测试从D4移植到D5时候,提示出错:[Error] DcomCsServerp.pas(58): Undeclared identifier: 'GetProviderNames'问题定位在DELPHI的控件升级上,从D4到D5做了更改,可是如何解决,请教大家远程数据模块代码如下:type
TDcomCsServer = class(TRemoteDataModule, IDcomCsServer)
DPMZLS: TProvider;
DPMZYP: TProvider;
DPZYTP: TProvider;
DPZYKS: TProvider;
DPZYFZ: TProvider;
DPZYLS: TProvider;
DPMZFZ: TProvider;
DPZYYP: TProvider;
DPYDYP: TProvider;
DppZYCW: TProvider;
DPPZYTW: TProvider;
DPYD_JSLS: TProvider;
function DSPMZLS1DataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
function DSPZYLSDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
procedure DSPMZLS1UpdateData(Sender: TObject; DataSet: TClientDataSet);
procedure DSPZYLSUpdateData(Sender: TObject; DataSet: TClientDataSet);
function DPMZLSDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
procedure DPZYLSUpdateData(Sender: TObject; DataSet: TClientDataSet);
function DPZYLSDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
procedure DPMZLSUpdateData(Sender: TObject; DataSet: TClientDataSet);
function DPYD_JSLSDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
private
{ Private declarations }
public
{ Public declarations } protected
Function MzConnect(Ls_Jsyy,Ls_Cfbh:String):Boolean;
Function ZYConnect(Ls_Jsyy:String;Ls_Cfbh:String):Boolean;
function Get_DPMZLS: IProvider; safecall;
function Get_DPYDYP: IProvider; safecall;
function Get_DPZYTP: IProvider; safecall;
function Get_DPZYKS: IProvider; safecall;
function Get_DPZYFZ: IProvider; safecall;
function Get_DPZYLS: IProvider; safecall;
function Get_DPZYYP: IProvider; safecall;
function Get_DPMZFZ: IProvider; safecall;
function Get_DPMZYP: IProvider; safecall;
function Get_DppZYCW: IProvider; safecall;
function Get_DPPZYTW: IProvider; safecall;
function Get_DPYD_JSLS: IProvider; safecall;
end;//编译时,光标定位在这里,然后提示错误信息如前var
DcomCsServer: TDcomCsServer;
类模块定义:unit ChatServer_TLB; IDcomCsServer = interface;
IDcomCsServerDisp = dispinterface; DcomCsServer = IDcomCsServer; IDcomCsServer = interface(IDataBroker)
['{85294AC4-1933-11D5-BC77-0000B434B269}']
function Get_DPMZLS: IProvider; safecall;
function Get_DPYDYP: IProvider; safecall;
function Get_DPZYTP: IProvider; safecall;
function Get_DPZYKS: IProvider; safecall;
function Get_DPZYFZ: IProvider; safecall;
function Get_DPZYLS: IProvider; safecall;
function Get_DPZYYP: IProvider; safecall;
function Get_DPMZFZ: IProvider; safecall;
function Get_DPMZYP: IProvider; safecall;
function Get_DppZYCW: IProvider; safecall;
function Get_DPPZYTW: IProvider; safecall;
function Get_DPYD_JSLS: IProvider; safecall;
property DPMZLS: IProvider read Get_DPMZLS;
property DPYDYP: IProvider read Get_DPYDYP;
property DPZYTP: IProvider read Get_DPZYTP;
property DPZYKS: IProvider read Get_DPZYKS;
property DPZYFZ: IProvider read Get_DPZYFZ;
property DPZYLS: IProvider read Get_DPZYLS;
property DPZYYP: IProvider read Get_DPZYYP;
property DPMZFZ: IProvider read Get_DPMZFZ;
property DPMZYP: IProvider read Get_DPMZYP;
property DppZYCW: IProvider read Get_DppZYCW;
property DPPZYTW: IProvider read Get_DPPZYTW;
property DPYD_JSLS: IProvider read Get_DPYD_JSLS;
//注意这里并没有GetProviderNames函数声明,在D4里也正常啊
end; IDcomCsServerDisp = dispinterface
['{85294AC4-1933-11D5-BC77-0000B434B269}']
property DPMZLS: IProvider readonly dispid 14;
property DPYDYP: IProvider readonly dispid 15;
property DPZYTP: IProvider readonly dispid 17;
property DPZYKS: IProvider readonly dispid 18;
property DPZYFZ: IProvider readonly dispid 19;
property DPZYLS: IProvider readonly dispid 20;
property DPZYYP: IProvider readonly dispid 21;
property DPMZFZ: IProvider readonly dispid 22;
property DPMZYP: IProvider readonly dispid 23;
property DppZYCW: IProvider readonly dispid 24;
property DPPZYTW: IProvider readonly dispid 25;
property DPYD_JSLS: IProvider readonly dispid 1;
function GetProviderNames: OleVariant; dispid 22929905;
//这里虽然有,但是远程数据模块用的接口不是它,而是IDcomCsServer
end; CoDcomCsServer = class
class function Create: IDcomCsServer;
class function CreateRemote(const MachineName: string): IDcomCsServer;
end;在线等待
TDcomCsServer = class(TRemoteDataModule, IDcomCsServer)
DPMZLS: TProvider;
DPMZYP: TProvider;
DPZYTP: TProvider;
DPZYKS: TProvider;
DPZYFZ: TProvider;
DPZYLS: TProvider;
DPMZFZ: TProvider;
DPZYYP: TProvider;
DPYDYP: TProvider;
DppZYCW: TProvider;
DPPZYTW: TProvider;
DPYD_JSLS: TProvider;
function DSPMZLS1DataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
function DSPZYLSDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
procedure DSPMZLS1UpdateData(Sender: TObject; DataSet: TClientDataSet);
procedure DSPZYLSUpdateData(Sender: TObject; DataSet: TClientDataSet);
function DPMZLSDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
procedure DPZYLSUpdateData(Sender: TObject; DataSet: TClientDataSet);
function DPZYLSDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
procedure DPMZLSUpdateData(Sender: TObject; DataSet: TClientDataSet);
function DPYD_JSLSDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
private
{ Private declarations }
public
{ Public declarations } protected
Function MzConnect(Ls_Jsyy,Ls_Cfbh:String):Boolean;
Function ZYConnect(Ls_Jsyy:String;Ls_Cfbh:String):Boolean;
function Get_DPMZLS: IProvider; safecall;
function Get_DPYDYP: IProvider; safecall;
function Get_DPZYTP: IProvider; safecall;
function Get_DPZYKS: IProvider; safecall;
function Get_DPZYFZ: IProvider; safecall;
function Get_DPZYLS: IProvider; safecall;
function Get_DPZYYP: IProvider; safecall;
function Get_DPMZFZ: IProvider; safecall;
function Get_DPMZYP: IProvider; safecall;
function Get_DppZYCW: IProvider; safecall;
function Get_DPPZYTW: IProvider; safecall;
function Get_DPYD_JSLS: IProvider; safecall;
end;//编译时,光标定位在这里,然后提示错误信息如前var
DcomCsServer: TDcomCsServer;
类模块定义:unit ChatServer_TLB; IDcomCsServer = interface;
IDcomCsServerDisp = dispinterface; DcomCsServer = IDcomCsServer; IDcomCsServer = interface(IDataBroker)
['{85294AC4-1933-11D5-BC77-0000B434B269}']
function Get_DPMZLS: IProvider; safecall;
function Get_DPYDYP: IProvider; safecall;
function Get_DPZYTP: IProvider; safecall;
function Get_DPZYKS: IProvider; safecall;
function Get_DPZYFZ: IProvider; safecall;
function Get_DPZYLS: IProvider; safecall;
function Get_DPZYYP: IProvider; safecall;
function Get_DPMZFZ: IProvider; safecall;
function Get_DPMZYP: IProvider; safecall;
function Get_DppZYCW: IProvider; safecall;
function Get_DPPZYTW: IProvider; safecall;
function Get_DPYD_JSLS: IProvider; safecall;
property DPMZLS: IProvider read Get_DPMZLS;
property DPYDYP: IProvider read Get_DPYDYP;
property DPZYTP: IProvider read Get_DPZYTP;
property DPZYKS: IProvider read Get_DPZYKS;
property DPZYFZ: IProvider read Get_DPZYFZ;
property DPZYLS: IProvider read Get_DPZYLS;
property DPZYYP: IProvider read Get_DPZYYP;
property DPMZFZ: IProvider read Get_DPMZFZ;
property DPMZYP: IProvider read Get_DPMZYP;
property DppZYCW: IProvider read Get_DppZYCW;
property DPPZYTW: IProvider read Get_DPPZYTW;
property DPYD_JSLS: IProvider read Get_DPYD_JSLS;
//注意这里并没有GetProviderNames函数声明,在D4里也正常啊
end; IDcomCsServerDisp = dispinterface
['{85294AC4-1933-11D5-BC77-0000B434B269}']
property DPMZLS: IProvider readonly dispid 14;
property DPYDYP: IProvider readonly dispid 15;
property DPZYTP: IProvider readonly dispid 17;
property DPZYKS: IProvider readonly dispid 18;
property DPZYFZ: IProvider readonly dispid 19;
property DPZYLS: IProvider readonly dispid 20;
property DPZYYP: IProvider readonly dispid 21;
property DPMZFZ: IProvider readonly dispid 22;
property DPMZYP: IProvider readonly dispid 23;
property DppZYCW: IProvider readonly dispid 24;
property DPPZYTW: IProvider readonly dispid 25;
property DPYD_JSLS: IProvider readonly dispid 1;
function GetProviderNames: OleVariant; dispid 22929905;
//这里虽然有,但是远程数据模块用的接口不是它,而是IDcomCsServer
end; CoDcomCsServer = class
class function Create: IDcomCsServer;
class function CreateRemote(const MachineName: string): IDcomCsServer;
end;在线等待
解决方案 »
- 网页字符串的换行符是什么?
- 菜鸟问题:如何将16进制数据转换为10进制
- c/s中客户端的数据如何保证是最新的?
- 如何在表格里添加进度条控件....
- 关于EXCEL表格内容:当EXCEL表格中有一个公式时,如何区分公式和公式的值?
- 在线等待,解决就结贴2
- Dll入口/出口函数
- 请教各位大虾,如何在程序里把本地盘上的文本文件打开
- 如何分解带符号的字符串
- 旧问题解决了,新的问题又产生了,gzmhero(hihihi):进来一下,好吗?
- 如何通过在编辑框输入非法字符使WINDOWS系统提示该程序执行非法操作?
- ★★★锁定计算机 (Lock Workstation) 时程序出现Win32错误,不知何故?★★★
SP_JK: TStoredProc;function TYlbxServer.Get_SP_JK: IProvider;
begin
Result := SP_JK.Provider;
end;2、类型2DPMZLS: TProvider;function TDcomCsServer.Get_DPMZLS: IProvider;
begin
Result := DPMZLS.Provider;
end;类型1与类型2都不能正确编译。请问D4里的TProvider组件升级到D5时,provider属性被哪个属性代替或隐藏?