打印本文 打印本文 关闭窗口 关闭窗口
开发一个基于DCOM的局域网聊天室(二)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1658  更新时间:2009/4/23 18:35:38  文章录入:mintao  责任编辑:mintao

TchatRoom的实现:

{ TChatRoom }

constructor TChatRoom.Create(RoomName:string;RoomID:integer);

begin

 FBufferLength:=0;

 FConnectCount:=0;

 FClearBufferTag:=1;

 FLocked:=false;

 FRoomName:=RoomName;

 FRoomID:=RoomID;

end;

 

procedure TChatRoom.ClearBuffer;

var

 i:integer;

begin

 ///在这里可以检测一个标志,判断是否需要服务器记录每一次聊天内容

 for i:=1 to 20 do

  FBuffer[i]:='''''''';

 FBufferLength:=0;

 FClearBufferTag:=0-FClearBufferTag;

end;

 

procedure TChatRoom.OneSpeak(content:string);

begin

 FLocked:=true;

 inc(FBufferLength);

 if FBufferLength>20 then

 begin

  ClearBuffer;

  inc(FBufferLength);

 end;

 FBuffer[FBufferLength]:=content;

 FLocked:=false;

end;

 

function TChatRoom.OneRead:TStrings;

var

 FStrings:TStrings;

 i:integer;

begin

 FLocked:=true;

 FStrings:=TStringList.Create;

 for i:=1 to FBufferLength do

  FStrings.Add(FBuffer[i]);

 result:=FStrings;

 FLocked:=false;

end;

 

function TChatRoom.GetCanRead: boolean;

begin

 result:=false;

 if FBufferLength>0 then result:=true;

end;

 

procedure TChatRoom.LoginRoom(UserName:string);

//用户登陆聊天室事件,这里没有完全实现

begin

 inc(FConnectCount);

end;

 

procedure TChatRoom.LeaveRoom(UserName: string);

//用户离开聊天室事件,这里没有完全实现

begin

 Dec(FConnectCount);

end;

服务器端的最后一个比较重要的部分TchatRoomManager:

type

 TChatRoomManager=class

 private

  ChatRoom:array of TChatRoom;

 public

  constructor Create;

  function FindRoomByID(id:integer):TChatRoom;

 end;

实现部分:

{ TChatRoomManager }

 

constructor TChatRoomManager.Create;

[1] [2]  下一页

打印本文 打印本文 关闭窗口 关闭窗口