⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uobjclasses.pas

📁 多数代码可以直接在Delphi6和Delphi7环境下运行。部分涉及.NET技术内容的代码
💻 PAS
字号:
unit uObjClasses;

interface

uses
  Messages, SysUtils, Variants, Classes, Graphics, Controls;

type
  ITest = interface
    ['{1EAD38E4-0632-4267-AD87-34FFFC686769}']
    function GetObjSize : Integer; stdcall;
    function GetInterfaceName : String; stdcall;
  end;


  TBase = class(TObject, ITest)
  private
    { Private declarations }
    iRef : Integer;
  public
    { Public declarations }
    function getStaticName : string;
    function getOID : string; virtual;
    function getName : string; virtual;
    function getRC : Integer;
    { IInterface }
    function QueryInterface(const IID: TGUID; out Obj): HResult; virtual; stdcall;
    function _AddRef: Integer; stdcall;
    function _Release: Integer; stdcall;
    //ITest
    function GetObjSize : Integer; stdcall;
    function GetInterfaceName : String; stdcall;
  end;

  TDerived1 = class(TBase, ITest)
  public
    function getStaticName : string;
    function getOID : string; override;
    function getName : string; override;
    //ITest
    function GetObjSize : Integer; stdcall;
  end;

implementation

{ TBase }

function TBase.getStaticName: string;
begin
  Result := Self.ClassName;
end;

function TBase.getName: string;
begin
  Result := 'Base Class';
end;

function TBase.getOID: string;
begin
  Result := 'Base-OID';
end;

function TBase.GetObjSize: Integer;
begin
  Result := TBase.InstanceSize;
end;

function TBase.QueryInterface(const IID: TGUID; out Obj): HResult;
begin
  if GetInterface(IID, Obj) then Result := S_OK
  else Result := E_NOINTERFACE
end;

function TBase._AddRef: Integer;
begin
  Inc(iRef);
  Result := iRef;
end;

function TBase._Release: Integer;
begin
  Dec(iRef);
  Result := iRef;
end;

function TBase.getRC: Integer;
begin
  Result := iRef;
end;

function TBase.GetInterfaceName: String;
begin
  Result := 'ITest';
end;

{ TDerived1 }

function TDerived1.getName: string;
begin
  Result := 'Derived1 Class';
end;

function TDerived1.GetObjSize: Integer;
begin
  Result := TDerived1.InstanceSize;
end;

function TDerived1.getOID: string;
begin
  Result := 'Derived1-OID';
end;

function TDerived1.getStaticName: string;
begin
  Result := Self.ClassName;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -