Delphi 封装-物理上的封装-物理封装和动态链接
Posted yishen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi 封装-物理上的封装-物理封装和动态链接相关的知识,希望对你有一定的参考价值。
unit DemoSvr_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 03-4-9 21:09:18 from Type Library described below. // ************************************************************************ // // Type Lib: E:Delphi面向对象编程思想示例程序封装用COM+封装对象DemoSvr.tlb (1) // LIBID: {B96FFC20-65BC-11D7-B847-001060806215} // LCID: 0 // Helpfile: // HelpString: DemoSvr Library // DepndLst: // (1) v2.0 stdole, (C:WINDOWSSYSTEMstdole2.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, 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 DemoSvrMajorVersion = 1; DemoSvrMinorVersion = 0; LIBID_DemoSvr: TGUID = ‘{B96FFC20-65BC-11D7-B847-001060806215}‘; IID_IDemoComObj: TGUID = ‘{B96FFC21-65BC-11D7-B847-001060806215}‘; CLASS_DemoComObj: TGUID = ‘{B96FFC23-65BC-11D7-B847-001060806215}‘; type // *********************************************************************// // Forward declaration of types defined in TypeLibrary // *********************************************************************// IDemoComObj = interface; // *********************************************************************// // Declaration of CoClasses defined in Type Library // (NOTE: Here we map each CoClass to its Default Interface) // *********************************************************************// DemoComObj = IDemoComObj; // *********************************************************************// // Interface: IDemoComObj // Flags: (256) OleAutomation // GUID: {B96FFC21-65BC-11D7-B847-001060806215} // *********************************************************************// IDemoComObj = interface(IUnknown) [‘{B96FFC21-65BC-11D7-B847-001060806215}‘] procedure Drive; stdcall; procedure ride; stdcall; end; // *********************************************************************// // The Class CoDemoComObj provides a Create and CreateRemote method to // create instances of the default interface IDemoComObj exposed by // the CoClass DemoComObj. The functions are intended to be used by // clients wishing to automate the CoClass objects exposed by the // server of this typelibrary. // *********************************************************************// CoDemoComObj = class class function Create: IDemoComObj; class function CreateRemote(const MachineName: string): IDemoComObj; end; implementation uses ComObj; class function CoDemoComObj.Create: IDemoComObj; begin Result := CreateComObject(CLASS_DemoComObj) as IDemoComObj; end; class function CoDemoComObj.CreateRemote(const MachineName: string): IDemoComObj; begin Result := CreateRemoteComObject(MachineName, CLASS_DemoComObj) as IDemoComObj; end; end.
class function CoDemoComObj.Create: IDemoComObj; begin Result := CreateComObject(CLASS_DemoComObj) as IDemoComObj; end;
function CreateComObject(const ClassID: TGUID): IUnknown; begin OleCheck(CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, IUnknown, Result)); end;
class function CoDemoComObj.CreateRemote(const MachineName: string): IDemoComObj; begin Result := CreateRemoteComObject(MachineName, CLASS_DemoComObj) as IDemoComObj; end;
以上是关于Delphi 封装-物理上的封装-物理封装和动态链接的主要内容,如果未能解决你的问题,请参考以下文章