先行知識
首先祝大家新春快樂
在前面的幾篇文章中我們已經探討了不少基於微軟COM的相關技術
在這次的文章中
這篇文章中我們要大致實現這個程序的一個基本的核心
由於篇幅關系
IChatManager = interface(IDispatch)
[
procedure SpeakTo(const content: WideString; destid: Integer); safecall;
//客戶向指定的房間說話
function ReadFrom(sourceid: Integer): IStrings; safecall;
//客戶從指定的房間讀取談話內容
function ReadReady(id: Integer): Byte; safecall;
//客戶檢測指定的房間是否已經可以讀取談話內容
procedure ConnectRoom(const UserName: WideString; RoomID: Integer); safecall;
//客戶登陸指定房間
procedure DisconnectRoom(const UserName: WideString; RoomID: Integer); safecall;
//客戶退出指定房間
function TestClearBufferTag(RoomID: Integer): Integer; safecall;
//客戶測試指定房間的緩沖區的清空與否狀況
end;
再來看看接口的實現類TChatManager部分
type
TChatManager = class(TAutoObject
protected
function ReadFrom(sourceid: Integer): IStrings; safecall;
//在這裡我們使用Delphi擴展的復雜類型TStings
//類型
procedure SpeakTo(const content: WideString; destid: Integer); safecall;
function ReadReady(id: Integer): Byte; safecall;
//用來提供給客戶端查詢指定的房間是否可讀
procedure ConnectRoom(const UserName: WideString; RoomID: Integer);
safecall;
procedure DisconnectRoom(const UserName: WideString; RoomID: Integer);
safecall;
function TestClearBufferTag(RoomID: Integer): Integer; safecall;
end;
實現部分
function TChatManager
var
TempRoom:TChatRoom;
begin
TempRoom:=ChatRoomManager
while TempRoom
begin
//do nothing只是等待解鎖
end;
GetOleStrings(TempRoom
end;
procedure TChatManager
var
TempRoom:TChatRoom;
begin
TempRoom:=ChatRoomManager
while
From:http://tw.wingwit.com/Article/program/Delphi/201401/30268.html