果然不同!发个我的这个版本的server_tlb.pas文件程序源码:
unit Server_TLB;
// ************************************************************************ //
// WARNING
// -------
// The types declared in this file were generated from data read from a
// Type Library. If this type library is explicitly or indirectly (via
// another type library referring to this type library) re-imported, or the
// 'Refresh' command of the Type Library Editor activated while editing the
// Type Library, the contents of this file will be regenerated and all
// manual modifications will be lost.
// ************************************************************************ //
// PASTLWTR : 1.2
// File generated on 2007-11-24 12:50:47 from Type Library described below.
// ************************************************************************ //
// Type Lib: D:/Pooler/Server.tlb (1)
// LIBID: {0CE99800-9F28-11D1-8944-00A0248E5091}
// LCID: 0
// Helpfile:
// HelpString: Server Library
// DepndLst:
// (1) v1.0 Midas, (C:/WINDOWS/system32/midas.dll)
// (2) v2.0 stdole, (C:/WINDOWS/system32/Stdole2.tlb)
// ************************************************************************ //
{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers.
{$WARN SYMBOL_PLATFORM OFF}
{$WRITEABLECONST ON}
{$VARPROPSETTER ON}
interface
uses Windows, ActiveX, Classes, Graphics, Midas, StdVCL, Variants;
// *********************************************************************//
// GUIDS declared in the TypeLibrary. Following prefixes are used:
// Type Libraries : LIBID_xxxx
// CoClasses : CLASS_xxxx
// DISPInterfaces : DIID_xxxx
// Non-DISP interfaces: IID_xxxx
// *********************************************************************//
const
// TypeLibrary Major and minor versions
ServerMajorVersion = 1;
ServerMinorVersion = 0;
LIBID_Server: TGUID = '{0CE99800-9F28-11D1-8944-00A0248E5091}';
IID_IPooledRDM: TGUID = '{0CE99801-9F28-11D1-8944-00A0248E5091}';
CLASS_PooledRDM: TGUID = '{0CE99802-9F28-11D1-8944-00A0248E5091}';
CLASS_Pooler: TGUID = '{0CE99804-9F28-11D1-8944-00A0248E5091}';
type
// *********************************************************************//
// Forward declaration of types defined in TypeLibrary
// *********************************************************************//
IPooledRDM = interface;
IPooledRDMDisp = dispinterface;
// *********************************************************************//
// Declaration of CoClasses defined in Type Library
// (NOTE: Here we map each CoClass to its Default Interface)
// *********************************************************************//
PooledRDM = IPooledRDM;
Pooler = IPooledRDM;
// *********************************************************************//
// Interface: IPooledRDM
// Flags: (4432) Hidden Dual OleAutomation Dispatchable
// GUID: {0CE99801-9F28-11D1-8944-00A0248E5091}
// *********************************************************************//
IPooledRDM = interface(IAppServer)
['{0CE99801-9F28-11D1-8944-00A0248E5091}']
end;
// *********************************************************************//
// DispIntf: IPooledRDMDisp
// Flags: (4432) Hidden Dual OleAutomation Dispatchable
// GUID: {0CE99801-9F28-11D1-8944-00A0248E5091}
// *********************************************************************//
IPooledRDMDisp = dispinterface
['{0CE99801-9F28-11D1-8944-00A0248E5091}']
function AS_ApplyUpdates(const ProviderName: WideString;
Delta: OleVariant;
MaxErrors: Integer;
out ErrorCount: Integer;
var OwnerData: OleVariant): OleVariant;
dispid 20000000;
function AS_GetRecords(const ProviderName: WideString;
Count: Integer;
out RecsOut: Integer;
Options: Integer;
const CommandText: WideString;
var Params: OleVariant;
var OwnerData: OleVariant): OleVariant;
dispid 20000001;
function AS_DataRequest(const ProviderName: WideString;
Data: OleVariant): OleVariant;
dispid 20000002;
function AS_GetProviderNames: OleVariant;
dispid 20000003;
function AS_GetParams(const ProviderName: WideString;
var OwnerData: OleVariant): OleVariant;
dispid 20000004;
function AS_RowRequest(const ProviderName: WideString;
Row: OleVariant;
RequestType: Integer;
var OwnerData: OleVariant): OleVariant;
dispid 20000005;
procedure AS_Execute(const ProviderName: WideString;
const CommandText: WideString;
var Params: OleVariant;
var OwnerData: OleVariant);
dispid 20000006;
end;
// *********************************************************************//
// The Class CoPooledRDM provides a Create and CreateRemote method to
// create instances of the default interface IPooledRDM exposed by
// the CoClass PooledRDM. The functions are intended to be used by
// clients wishing to automate the CoClass objects exposed by the
// server of this typelibrary.
// *********************************************************************//
CoPooledRDM = class
class function Create: IPooledRDM;
class function CreateRemote(const MachineName: string): IPooledRDM;
end;
// *********************************************************************//
// The Class CoPooler provides a Create and CreateRemote method to
// create instances of the default interface IPooledRDM exposed by
// the CoClass Pooler. The functions are intended to be used by
// clients wishing to automate the CoClass objects exposed by the
// server of this typelibrary.
// *********************************************************************//
CoPooler = class
class function Create: IPooledRDM;
class function CreateRemote(const MachineName: string): IPooledRDM;
end;
implementation
uses ComObj;
class function CoPooledRDM.Create: IPooledRDM;
begin
Result := CreateComObject(CLASS_PooledRDM) as IPooledRDM;
end;
class function CoPooledRDM.CreateRemote(const MachineName: string): IPooledRDM;
begin
Result := CreateRemoteComObject(MachineName, CLASS_PooledRDM) as IPooledRDM;
end;
class function CoPooler.Create: IPooledRDM;
begin
Result := CreateComObject(CLASS_Pooler) as IPooledRDM;
end;
class function CoPooler.CreateRemote(const MachineName: string): IPooledRDM;
begin
Result := CreateRemoteComObject(MachineName, CLASS_Pooler) as IPooledRDM;
end;
end.
今天白天看《Delphi COM深入编程》也好像有你的哪样的代码,现在正在看。
好像咱们的这两个版本之间就是server_tlb.pas部分不完全相同。其它的文件好像完全一样。
TLB文件是类型文件,它是给其它语言的开发工具准备的。它是系统自动生成的,为什么有这样差别我也不清楚,但可以肯定的是,它并不是作者手写的,它是系统自动生成的。所以,我认为其它的文件,像pooler,srvrdm等等才是这个Pooler的重点,也是我们应该关心的。
我给你发一个我的版本的Pooler你参考一下。