程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> COM程序編寫入門(全文-2)

COM程序編寫入門(全文-2)

編輯:Delphi

COM的理論

以實例來講

COM的接口(Interface)是COM的核心,所有的COM接口都是通過IUnknown派生出來的,它告知客戶那些接口是有效的,即已經被實現類說定義。它定義的一般方式如下: ISimpleInterface=Interface(IUnknown)       Function GetName:String        Procedure SetName(v_Name:String)        End; 如果在上面的接口中加入這樣一行: ISimpleInterface=Interface(IUnknown)        V_Name:String;        Function GetName:String        Procedure SetName(v_Name:String)        End; 這樣是不被允許的,因為上面我們說到接口方法就像是一個占位符,需要實現類引出才有實際意義,v_Name:String這一句只是一個數據成員將永遠無任何意義,如果要定義也只能在實現類中定義。 現在舉一個COM的例子,沒有什麼實際用處但至少說明問題: unit Unit1;   interface   uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls;   type   TForm1 = class(TForm)     Label1: TLabel;     Edit1: TEdit;     Button1: TButton;     Button2: TButton;     procedure FormCreate(Sender: TObject);     procedure Button1Click(Sender: TObject);     procedure Button2Click(Sender: TObject);     procedure FormClose(Sender: TObject; var Action: TCloseAction);   private     { Private declarations }   public     { Public declarations }   end;     ISimpleInterface=Interface(IUnknown)     Procedure SetValue(v_Value:Integer);     Function GetValue:Integer;   End;     TSimpleImple=Class(TInterfacedObject,ISimpleInterface)   Public     Value:Integer;     Procedure SetValue(v_Value:Integer);     Function GetValue:Integer;   End;   var   Form1: TForm1;   v_Obj:TSimpleImple; implementation   {$R *.dfm}   { TSimpleImple }   function TSimpleImple.GetValue: Integer; begin   Result:=Value; end;   procedure TSimpleImple.SetValue(v_Value: Integer); begin   Value:=v_Value; end;   procedure TForm1.FormCreate(Sender: TObject); begin   v_Obj:=TSimpleImple.Create; end;   procedure TForm1.Button1Click(Sender: TObject); begin   v_Obj.SetValue(StrToInt(Edit1.Text));   Edit1.Clear; end;   procedure TForm1.Button2Click(Sender: TObject); begin   Edit1.Text:=IntToStr(v_Obj.GetValue); end;   procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin   v_Obj.Free; end;   end. 藍色字樣即定義了一個接口,在形式上在ISimpleInterface(接口定義)和TSimpleImple(實現類)幾乎定義都差不多,但是我要強調的是,接口定義是為了實現OLE方式的訪問,而實現類的定義,是接口功能的實現。兩者在功能和實現上都是有區別的。   (待續…)
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved