📄 talkwithserver.pas
字号:
unit TalkWithServer;
interface
uses
CommonDef, MsgClient, SysUtils, Variants, Classes;
const
StatusList: array[0..5] of String = ('脱机', '联线',
'忙碌', '离开', '外出就餐', '就回来');
type
TSvrResult = (srtOk, srtNotLogined, srtError,
srtNoResponse, srtInvalidQuery, srtNotAllowed);
var
MsgServer:string = '127.0.0.1';
MsgServerPort:Integer = 10555;
procedure SendAddCorrManCommandToServer (var Res: TSvrResult;
var CorrMan: TMyCorrMan);
procedure SendDelCorrManCommandToServer (var Res: TSvrResult;
var CorrMan: TMyCorrMan);
procedure LoginToServer (var Res: TSvrResult; UserName: string;
Password: string);
procedure LogoffFromServer (var Res: TSvrResult; UserName: string);
procedure GetCorrManListFromServer(var Res: TSvrResult; UserName: string;
var Count: Integer; var List: array of TMyCorrMan; Size: Integer);
implementation
procedure SendAddCorrManCommandToServer (var Res: TSvrResult;
var CorrMan: TMyCorrMan);
var
Command: string;
Result: TStringList;
begin
Res := srtOk;
CorrMan.UserTitle := ' ';
CorrMan.EmailAddress := ' ';
CorrMan.MessageCount := 0;
CorrMan.Status := cnsOnline;
//to send command to server
Result := TStringList.Create;
try
Command := AddCorrMan + ' ' + CorrMan.UserName;
dmeMsgClient.TalkWithServer(Command, Result);
Res := srtNotLogined;
if (Result.Count >= 1) then
begin
Res := srtOk;
end;
finally
Result.Free;
end;
end;
procedure SendDelCorrManCommandToServer (var Res: TSvrResult;
var CorrMan: TMyCorrMan);
var
Command: string;
Result: TStringList;
begin
Res := srtOk;
//to send command to server
Result := TStringList.Create;
try
Command := DelCorrMan + ' ' + CorrMan.UserName;
dmeMsgClient.TalkWithServer(Command, Result);
Res := srtNotLogined;
if (Result.Count >= 1) then
begin
Res := srtOk;
end;
finally
Result.Free;
end;
end;
{******************************
先检查用户名是否为空,为空则退出
向服务器发送登录信息,并根据返回
结果判断是否成功登陆,并返回相应
的输出信息
******************************}
procedure LoginToServer (var Res: TSvrResult; UserName: string;
Password: string);
var
Command: string;
Result: TStringList;
begin
if (UserName = ' ') then
Exit;
//to connect the server
//MsgServer := tcpMsgClient.
dmeMsgClient.Connect(MsgServer, MsgServerPort);
//to login the user
Result := TStringList.Create;
try
Command := Login + ' ' + UserName + ' ' + Password;
dmeMsgClient.TalkWithServer(Command, Result);
Res := srtNotLogined;
if (Result.Count >= 1) then
if (Result.Strings[0] = LoginOk) then
Res := srtOk;
finally
Result.Free;
end;
end;
procedure LogoffFromServer (var Res: TSvrResult; UserName: string);
var
Command: string;
Result: TStringList;
begin
if (UserName = ' ') then
Exit;
//to logoff from the server
Result := TStringList.Create;
try
Command := Logoff + ' ' + UserName;
dmeMsgClient.TalkWithServer(Command, Result);
Res := srtNotLogined;
if (Result.Count >= 1) then
if (Result.Strings[0] = LogoffOk) then
Res := srtOK;
finally
Result.Free;
end;
end;
procedure GetCorrManListFromServer(var Res: TSvrResult; UserName: string;
var Count: Integer; var List: array of TMyCorrMan; Size: Integer);
var
Command: string;
Result: TStringList;
I: Integer;
Line: string;
DivPos: Integer;
begin
if (UserName = ' ') then
Exit;
//to logoff from the server
Result := TStringList.Create;
try
Command := GetCList + ' ' + UserName;
dmeMsgClient.TalkWithServer(Command, Result);
Count := 0;
for I:=0 To Result.Count-1 do
begin
Line := Result.Strings[I];
if (Line = GetCListError) then
begin
Res := srtError;
Exit;
end;
if (Pos(GetCListOk, Line) = 1) then
begin
DivPos := Length(GetCListOk) + 1;
DecodeCorrManPropertyLine(List[Count], Copy(Line, DivPos+1, Length(Line)-DivPos));
Inc(Count);
if (Count > Size-1) then
Break;
end;
end;
Res := srtOk;
finally
Result.Free;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -