unit UserRemarkService; interface uses StrUtils, SysUtils, Windows, superobject, Classes, BaseService; type TUserRemarkService = class(TBaseService) private FUserRemarks: ISuperObject; procedure OldChangeRemark(AUserRemark: ISuperObject); public function GetUserRemark(ALoginName: string): ISuperObject; procedure SetUserRemark(AUserRemark: ISuperObject); procedure Init; procedure Uninstall; constructor Create; destructor Destroy; override; class function GetService: TUserRemarkService; static; end; implementation uses MainFrm, DataProviderImport, InterfaceDataProvider, LoggerImport, Messages, UsersService; var AUserRemarkService: TUserRemarkService; { TUserRemarkService } constructor TUserRemarkService.Create; begin end; destructor TUserRemarkService.Destroy; begin inherited; end; class function TUserRemarkService.GetService: TUserRemarkService; begin if AUserRemarkService = nil then AUserRemarkService := TUserRemarkService.Create; Result := AUserRemarkService; end; function TUserRemarkService.GetUserRemark(ALoginName: string): ISuperObject; var item: TSuperAvlEntry; begin for item in FUserRemarks.AsObject do begin if SameText(item.Name, ALoginName) then begin Result := item.Value; Exit; end; end; end; procedure TUserRemarkService.Init; begin FUserRemarks := nil; if Mainform.RealICQClient.Me.Remark = '' then begin FUserRemarks := SO('{}'); Exit; end; FUserRemarks := SO(Mainform.RealICQClient.Me.Remark); if FUserRemarks = nil then FUserRemarks := SO('{}'); end; //{"Phone":"","LoginName":"0578+0-lslinlh","Mobile":"","Remark":"","RemarkedLoginName":"0578+0-penghl"}, procedure TUserRemarkService.SetUserRemark(AUserRemark: ISuperObject); var item: TSuperAvlEntry; begin for item in FUserRemarks.AsObject do begin if SameText(item.Name, AUserRemark.S['RemarkedLoginName']) then begin if SameText(item.Value.S['Phone'], AUserRemark.S['Phone']) and SameText(item.Value.S['Mobile'], AUserRemark.S['Mobile']) and SameText(item.Value.S['Remark'], AUserRemark.S['Remark'])then Exit else begin OldChangeRemark(AUserRemark); end; end; end; end; procedure TUserRemarkService.OldChangeRemark(AUserRemark: ISuperObject); var Remarks: String; begin // if not Logined or not Connected then raise Exception.Create('±ØÐëÏȵǼ'); // RealICQUser := TUsersService.GetUsersService.GetOrRequestUser(ALoginName); // if RealICQUser = nil then Exit; Remarks := ''; Remarks := Remarks + AnsiReplaceStr(AUserRemark.S['Remark'], Chr(10), '') + 'NONE' + Chr(10); Remarks := Remarks + AUserRemark.S['Phone'] + 'NONE' + Chr(10); Remarks := Remarks + AUserRemark.S['Mobile'] + 'NONE'; MainForm.RealICQClient.SendChangeRemark(AUserRemark.S['RemarkedLoginName'], Remarks); end; procedure TUserRemarkService.Uninstall; begin FUserRemarks := nil; end; end.