熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

新手上路:Delphi接口筆記

2013-11-11 21:04:02  來源: Delphi編程 
// a:=stringToGuid({FBC});
  // IChart 和 chart接口各自具有不同的GUID根本不相容
  // a:=stringtoGuid({FBC});}
  // StringToGuid 用於將 字符串GUID轉換為 TGUID
  // GuidToString 用於將TGUID轉換為字符串guid
  //varSupports 判斷 Variant 變量 是否支持 TGuid這個接口
  
  procedure TFormbtnGenerateClick(Sender: TObject);
  var
   Guid: TGUID;
  begin
   CoCreateGuid(Guid);
   MemoLinesAdd(GuidToString(Guid));
  end;
  Supports 函數 判斷是否支持特定接口
  CoCreateGuid 這個procedure 可以生成GUID號
  GuidToString 將TGUID轉換成字符串GUID
  StringToGuid 將字符串GUID轉換成 TGUID 類型
  
  TGUID 聲明
   TGUID = packed record
    D: LongWord;
    D: Word;
    D: Word;
    D: array[] of Byte;
   end;
  GUID 例子
  {DDADDAAFEBD}
  
  當 interface 變量 賦值為Nil時自動釋放
  可以將實現某接口的變量作為參數直接賦值給需要這個接口作為參數的過程或函數
  
  接口數組的聲明
  FEmpArray: Array[ MAX_EMPLOYEES] of IUnknown;
  
  OLE容器中的自動化對象與iMPORT 後的 xxxx_tlbPAS 的通信方式
  var
   vsht:IUnknown;
   isht:_Workbook;
  begin
   olcRun;
   if not (olcState=osRunning) then olcRun;
   vsht:=olcOleObjectInterface; //調用OLE容器D的OleObjectInterface 而不是OleObject
   isht:=vsht as _Workbook;
   eshtConnectTo(isht);
   (eshtWorksheetsItem[] as _WorkSheet)CellsItem[]value:=;
   eshtApplicationQuit;
   eshtDisconnect;
  end;
  
  問題
   Delphi Import office 的 Graph 對象後為什麼會生成 IApplicationIChart……等這樣的接口和
  Dispinterface 這樣的接口有什麼區別?另外 Graph中 Dispinterface 的接口可以在注冊表中找到相同的GUID而i開頭的接口就找不到為什麼?另外根據FLAG來看似乎聲明成了 HIDDEN DISPABLE
  
  是什麼含義?
  隱藏接口嗎?有什麼用?調試? 為什麼EXCEL的IMPORT沒有?
From:http://tw.wingwit.com/Article/program/Delphi/201311/8394.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.