unit RealICQModel; interface uses Classes, Windows, SysUtils, xFonts, Graphics; type //短信控制模式 0:按月限制 按天限制 TSendSMSLimitMode=(smsMonthLimit=0,smsDayLimit=1); //短信可发数量控制的应用角色 0:应用部门的可发数量 1 应用用户本人的可发数量 TSendSMSLimitRole=(smsBranchRole=0,smsUserRole=1,smsUnLimit=2); //连接成功后的动作 TRealICQConnectType = (ctLogin, ctRegister); //工作模式 TRealICQWorkingMode = (wmPublic = 0, wmCorporation = 1); //登录状态 TRealICQLoginState = (stOffline = 0, stOnline = 1, stLeave = 2, stBusy = 3, stMute = 4, stHidden = 5, stMobileOnline = 6); TRealICQSexType = (seMale = 0, seFemale = 1, seUnknown = 2); TRealICQLoginResultType = ( rtLoginOK = 0, rtCanUpdate = 1, rtMustUpdate = 2, rtVersionError = 3, rtAuthorizationError = 4, rtOther = 5,rtLoginErrorByDisplayName=6); TRealICQRegResultType = ( rgRegOK = 0, rgCanUpdate = 1, rgMustUpdate = 2, rgVersionError = 3, rgLoginNameExist = 4, rgOther = 5); TRealICQHeadImageFileType = ( htNONE = 255, htJPG = 0, htGIF = 1, htBMP = 2 ); TRealICQSearchType = ( stLookOnline = 0, stByLoginName = 1, stByDisplayName = 2); TRealICQMatchingType = ( mtExactSearch = 0, mtLikeSearch = 1); TRealICQExInfoSecretLevel = ( slOnlyFriendCanSee = 0, slAllCanSee = 1, slAllCannotSee = 2); TRealICQTeamValidateType = ( tvAllCanJoinTeam = 0, tvNeedValidate = 1, tvAllCannotJoinTeam = 2, tvAllCannotJoinTeamNew = 4); TRealICQTeamSearchType = ( tsByTeamID = 0, tsByTeamCaption = 1, tsByTeamIntro = 2, tsByTeamCreater = 3); TFileTransmitterObjective = (foFile = 0, foFace = 1); TRealICQTeam = class public TeamID: string; TeamCaption: string; TeamCreater: string; TeamCallBoard: string; TeamIntro: string; TeamValidate: TRealICQTeamValidateType; TeamManagers: string; TeamMembers: string; IsTempTeam: Boolean; function Clone: TRealICQTeam; end; //保存用户权限类 TUserPermission=class private FEnableSendSms:Boolean; FEnableMultiSendSms:Boolean; FAddrBookSize:SmallInt; FEnableBackup:Boolean; FSMSLimitMode:TSendSMSLimitMode; FSMSLimitRole:TSendSMSLimitRole; FHasBeenSentSmsCount:Integer; FCanSendSmsCount:Integer; public property EnableSendSms:Boolean read FEnableSendSms write FEnableSendSms; property EnableMultiSendSms:Boolean read FEnableMultiSendSms write FEnableMultiSendSms; property EnableBackup:Boolean read FEnableBackup write FEnableBackup; property AddrBookSize:SmallInt read FAddrBookSize write FAddrBookSize; property SMSLimitMode:TSendSMSLimitMode read FSMSLimitMode write FSMSLimitMode; property SMSLimitRole:TSendSMSLimitRole read FSMSLimitRole write FSMSLimitRole; property HasBeenSentSmsCount:Integer read FHasBeenSentSmsCount write FHasBeenSentSmsCount; property CanSendSmsCount:Integer read FCanSendSmsCount write FCanSendSmsCount; end; TLoginUser=class private FLoginName:string; FPassword:String; public property LoginName:String read FLoginName write FLoginName; property Password:String read FPassword write FPassword; end; TSearchResultRecord = class public LoginName: string; DisplayName: string; Watchword: string; LoginState: TRealICQLoginState; Sex: TRealICQSexType; end; TSearchTeamResultRecord = class public TeamID: String; TeamCaption: String; TeamIntro: String; TeamCreater: String; end; /// 存储系统消息接口信息 TSysMsgInterface=class public ShowMsg:Boolean; SendToMobile:Boolean; SendToUMC:Boolean; MsgIID, InterFaceName, Remark:String; DefaultInterface:Boolean; Position:Integer; end; //Web标签信息 TSystemNotices = class public Title: String; URL: String; EndDate: TDateTime; end; //Web标签信息 TWebTabRecord = class private function GetIconFile: String; public ID: String; Name: String; Icon: String; Method: String; PostFields: String; URL: String; MustShow: Boolean; Content: String; property IconFile: String read GetIconFile; end; //部门数据 TRealICQBranchInfo = class public ID: String; ParentID: String; BranchName: String; OnlineEmployee, EmployeeCount: Cardinal; IsGetUserList:Boolean; function Clone: TRealICQBranchInfo; end; TRealICQSystemMessageType = (mtBroadcast = 0, mtAdvertisement = 1,mtConfirmMsg=2); TRealICQSystemMessagePosition = (mpCenter = 0, mpRightBottom = 1, mpCustom = 2); TRealICQSystemMessage = class public MessageID: Integer; MessageType: TRealICQSystemMessageType; AutoOpenWindow: Boolean; Position: TRealICQSystemMessagePosition; Left: SmallInt; Top: SmallInt; Width: SmallInt; Height: SmallInt; Delay: double; MaxShowTimes: Byte; Title: String; Content: String; URL: String; AutoCloseTime: SmallInt; end; //用户数据 TRealICQUser = class private FPort: Word; FRealICQClient: TObject; FRealICQPtoPBox: TObject; FClickedSNS: Boolean; function GetRealICQPtoPBox: TObject; function GetHeadImageFile: string; function GetAddress: string; function GetPort: Word; function GetHasNewSNSUpdate: Boolean; public Sex: TRealICQSexType; LoginName: string; DisplayName: string; Watchword: string; Remark: string; Remark1: string; RemarkTel: string; RemarkMobile: string; LoginState: TRealICQLoginState; LeaveMessage: string; Address: string; HeadImageFileType: TRealICQHeadImageFileType; HeadImageHashValue: string; InstalledCamera: Boolean; InstalledSoundCard: Boolean; LoginAtWeb: Boolean; LoginAsWaiter: Boolean; LastClickSNSUpdateTime: TDateTime; SNSUpdateTime: TDateTime; BranchID: string; TrueName, Company, Branch, Duty, Calling, Country, Province, City, Tel, Mobile, Email, Post, HomeAddress, URL, Intro: string; SeeInfoPermissions:byte; //查看用户资料的权限等级 ShortMobile: string; OfficeID: string; OfflineAutoResponseEnabled: Boolean; OfflineAutoResponseText: string; Secret: TRealICQExInfoSecretLevel; CurrentExInfoVersion: Integer; //是否已经对比过版本信息 IsComparedVer: Boolean; GettedOffliceAutoResponseSet: Boolean; Position: Double; LastReflashLoginStatus: Cardinal; constructor Create(ALoginName: string; ARealICQClient: TObject); destructor Destroy; override; procedure ClickedSNSIcon; function IsNeedRequestUserStatus: Boolean; property Port: Word read GetPort write FPort; property HeadImageFile: string read GetHeadImageFile; property HasNewSNSUpdate: Boolean read GetHasNewSNSUpdate; property RealICQPtoPBox: TObject read GetRealICQPtoPBox write FRealICQPtoPBox; property Nickname: String read DisplayName; end; TSendFileRequestInfo = class private FLoginName: string; FObjective: TFileTransmitterObjective; FOppositeID: Cardinal; FFileLength: Int64; FFileName: string; FMD5Code: string; FFileExtImage: string; protected public constructor Create(ALoginName: string; AObjective: TFileTransmitterObjective; AOppositeID: Cardinal; AFileLength: Int64; AFileName, AMD5Code, AFileExtImage: string); property LoginName: string read FLoginName write FLoginName; property Objective: TFileTransmitterObjective read FObjective write FObjective; property OppositeID: Cardinal read FOppositeID write FOppositeID; property FileLength: Int64 read FFileLength write FFileLength; property FileName: string read FFileName write FFileName; property MD5Code: string read FMD5Code write FMD5Code; property FileExtImage: string read FFileExtImage write FFileExtImage; end; TRealICQMessage = class private FSender: string; FReceiver: string; FFontStr: string; FMessageStr: string; FMessageID: Cardinal; {消息的ID,同时也是消息发送的Ticket} FSendDateTime: TDateTime; FIsEncryMessage:Boolean; FID:Integer; public constructor Create(ASender, AReceiver, AFontStr, AMessageStr: String;AIsEncryMessage:Boolean); published property Sender: string read FSender write FSender; property Receiver: string read FReceiver write FReceiver; property FontStr: string read FFontStr write FFontStr; property MessageStr: string read FMessageStr write FMessageStr; property MessageID: Cardinal read FMessageID write FMessageID; property SendDateTime: TDateTime read FSendDateTime write FSendDateTime; property IsEncryMessage:Boolean read FIsEncryMessage write FIsEncryMessage; property ID:Integer read FID write FID; end; TRealICQTeamMessage = class private FID:Integer; FIsEncryMessage:Boolean; FTeamID: string; FSender: string; FFontStr: string; FMessageStr: string; FMessageID: Cardinal; {消息的ID,同时也是消息发送的Ticket} FSendDateTime: TDateTime; public constructor Create(ATeamID: string; ASender, AFontStr, AMessageStr: string;IsEncry:Boolean); published property TeamID: string read FTeamID write FTeamID; property Sender: string read FSender write FSender; property FontStr: string read FFontStr write FFontStr; property MessageStr: string read FMessageStr write FMessageStr; property MessageID: Cardinal read FMessageID write FMessageID; property SendDateTime: TDateTime read FSendDateTime write FSendDateTime; property IsEncryMessage:Boolean read FIsEncryMessage write FIsEncryMessage; property ID:Integer read FID write FID; end; //主窗体广告位数据 TMainFormAdversement = record Visible: Boolean; Height: SmallInt; URL: string; end; //对话窗体广告位数据 TTalkingFormAdversement = record Visible: Boolean; Width: SmallInt; URL: string; end; //对话窗体广告位数据 TWebSearchInfo = record Visible: Boolean; Title, URL: string; end; //表情类 TFace = class private FName: String; FShortCut: String; FFileName: String; FMD5Code: String; FCategory: String; public constructor Create(AFileName, AShortCut, AName, AMD5Code: String; ACategory: String); procedure Assign(AFace: TFace); procedure SetFileName(Value: String); published property Name: String read FName write FName; property ShortCut: String read FShortCut write FShortCut; property FileName: String read FFileName write SetFileName; property MD5Code: String read FMD5Code write FMD5Code; property Category: String read FCategory write FCategory; end; TUsersHandleMessagesEvent=procedure(Sender: TObject; const AData: TBytes) of object; TRealICQManageAddrBookResultEvent=procedure(Sender: TObject;OperatModal:Integer;OperatCommand:Integer;RetValue,MessageId:Cardinal) of object; TRealICQLoginResultEvent = procedure(Sender: TObject; LoginResultType: TRealICQLoginResultType; ResultMessage: String) of object; TRealICQRegResultEvent = procedure(Sender: TObject; ALoginName: String; RegResultType: TRealICQRegResultType; ResultMessage: String) of object; TRealICQUserInformationReadyEvent = procedure(Sender: TObject; RealICQUser: TRealICQUser) of object; TRealICQBeDroppedEvent = procedure(Sender: TObject; Excuse: String) of object; TRealICQLoginFailedEvent = procedure(Sender: TObject; E: Exception ) of object; TRealICQRegFailedEvent = procedure(Sender: TObject; E: Exception ) of object; TRealICQSearchResultEvent = procedure(Sender: TObject; ARecordCount: Integer; APageCount: Integer; APageIndex: Integer; SearchResultRecords: array of TSearchResultRecord) of object; TRealICQAddFriendRequestEvent = procedure(Sender: TObject; ALoginName: String; ATag: String) of object; TRealICQAddFriendResponseEvent = procedure(Sender: TObject; ALoginName: String; ATag: String; AAcceptted: Boolean) of object; TRealICQHeadImageReadyEvent = procedure(Sender: TObject; RealICQUser: TRealICQUser) of object; TRealICQChangePasswordResultEvent = procedure(Sender: TObject; APassChanged: Boolean; ANewPassword: String) of object; TRealICQReConnectExecuteEvent = procedure(Sender: TObject; ASeconds: Integer) of object; TRealICQRemovedUserEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQAddedBlacklistsEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQGetWebTabsEvent = procedure(Sender: TObject; ATabCount: Integer; WebTabRecords: array of TWebTabRecord) of object; TRealICQDownloadFileEvent = procedure(Sender: TObject; AFileName: String) of object; TRealICQSendedMessageEvent = procedure(Sender: TObject; RealICQMessage: TRealICQMessage) of object; TRealICQReceivedMessageEvent = procedure(Sender: TObject; RealICQMessage: TRealICQMessage) of object; TRealICQSendMessageFailedEvent = procedure(Sender: TObject; RealICQMessage: TRealICQMessage) of object; TRealICQSendedSendFileRequestEvent = procedure(Sender: TObject; FileTransmitter: TObject) of object; TRealICQGettedSendFileRequestEvent = procedure(Sender: TObject; SendFileRequestInfo: TSendFileRequestInfo) of object; TRealICQCancelSendFileEvent = procedure(Sender: TObject; ALoginName: String; AOppositeID: Cardinal) of object; TRealICQPleaseSendFaceToMeEvent = procedure(Sender: TObject; ALoginName, AFaceMD5Code: String) of object; TRealICQInputtingEvent = procedure(Sender: TObject; ALoginName: String; AInputting: Boolean) of object; TRealICQSendedAudioTransmiteRequestEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQGettedAudioTransmiteRequestEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQGettedAudioTransmiteResponseEvent = procedure(Sender: TObject; ALoginName: String; AAcceptted: Boolean) of object; TRealICQGettedCancelAudioTransmiteEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQGettedStopAudioTransmiteEvent = procedure(Sender: TObject; ALoginName: String; AIsStopper: Boolean) of object; TRealICQGettedAudioTransmiteConnecttedEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQCalculatedWaveInVolumeEvent = procedure(Sender: TObject; ALoginName: String; AVolume: Integer) of object; TRealICQCalculatedWaveOutVolumeEvent = procedure(Sender: TObject; ALoginName: String; AVolume: Integer) of object; TRealICQSendedVideoTransmiteRequestEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQGettedVideoTransmiteRequestEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQGettedVideoTransmiteResponseEvent = procedure(Sender: TObject; ALoginName: String; AAcceptted: Boolean) of object; TRealICQGettedCancelVideoTransmiteEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQGettedStopVideoTransmiteEvent = procedure(Sender: TObject; ALoginName: String; AIsStopper: Boolean) of object; TRealICQGettedVideoTransmiteConnecttedEvent = procedure(Sender: TObject; ALoginName: String; ASendBigBmp, ARecvBigBmp: Boolean) of object; TRealICQReceivedVideoImageEvent = procedure(Sender: TObject; ALoginName: String; ABitmap: TBitmap) of object; TRealICQCapturedVideoImageEvent = procedure(Sender: TObject; ALoginName: String; ABitmap: TBitmap) of object; TRealICQCreateTeamResultEvent = procedure(Sender: TObject; ATeamCaption: String; ACreated: Boolean; ATeamID: String; AFailingCause: String) of object; TRealICQTeamInfoReadyEvent = procedure(Sender: TObject; ARealICQTeam: TRealICQTeam) of object; TRealICQJoinedTeamEvent = procedure(Sender: TObject; ARealICQTeam: TRealICQTeam) of object; TRealICQTeamDisbandedEvent = procedure(Sender: TObject; ARealICQTeam: TRealICQTeam) of object; TRealICQTeamQuittedEvent = procedure(Sender: TObject; ARealICQTeam: TRealICQTeam; ALoginName: String) of object; TRealICQSearchTeamResultEvent = procedure(Sender: TObject; ARecordCount: Integer; APageCount: Integer; APageIndex: Integer; SearchTeamResultRecords: array of TSearchTeamResultRecord) of object; TRealICQJoinTeamRequestEvent = procedure(Sender: TObject; ARealICQTeam: TRealICQTeam; ALoginName: String; ATag: String) of object; TRealICQJoinTeamResponseEvent = procedure(Sender: TObject; ATeamID: String; ALoginName: String; ATag: String; AAcceptted: Boolean) of object; TRealICQSendedTeamMessageEvent = procedure(Sender: TObject; RealICQTeamMessage: TRealICQTeamMessage) of object; TRealICQReceivedTeamMessageEvent = procedure(Sender: TObject; RealICQTeamMessage: TRealICQTeamMessage) of object; TRealICQSendTeamMessageFailedEvent = procedure(Sender: TObject; RealICQTeamMessage: TRealICQTeamMessage) of object; TRealICQPleaseUploadTeamFaceEvent = procedure(Sender: TObject; MD5String: String; var FileName: String) of object; TRealICQDownloadTeamFaceEvent = procedure(Sender: TObject; AFileName: String) of object; TRealICQReceivedSystemMessageEvent = procedure(Sender: TObject; ASystemMessage: TRealICQSystemMessage) of object; TRealICQShakeWindowEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQReceivedCustomMessageEvent = procedure(Sender: TObject; AContent: String) of object; TRealICQGetDBProcedureResultEvent = procedure(Sender: TObject; DBProcedureName, ArgIn, ArgOut: String) of object; TRealICQSMSResultEvent = procedure(Sender: TObject; AMessageID: Cardinal; AResult: Integer) of object; TRealICQReceivedSMSEvent = procedure(Sender: TObject; ASMSSender, ASMSContent: String; ASMSDateTime: TDateTime) of object; TRealICQReceivedOfflineAutoResponseSetEvent = procedure(Sender: TObject; AEnabled: Boolean; AText: String) of object; TRealICQReceivedServerListEvent = procedure(Sender: TObject; AServerList: String) of object; TRealICQReceivedOfflineFileEvent = procedure(Sender: TObject; ASender, AFileName: String; AFileSize: Int64; ASendDateTime: TDateTime) of object; TRealICQSendedRemoteControlTransmiteRequestEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQGettedRemoteControlTransmiteRequestEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQGettedRemoteControlTransmiteResponseEvent = procedure(Sender: TObject; ALoginName: String; AAcceptted: Boolean) of object; TRealICQGettedCancelRemoteControlTransmiteEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQGettedStopRemoteControlTransmiteEvent = procedure(Sender: TObject; ALoginName: String; AIsStopper: Boolean) of object; TRealICQGettedRemoteControlTransmiteConnecttedEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQGettedRemoteControlTransmiteScreenSizeEvent = procedure(Sender: TObject; ALoginName: String; AWidth, AHeight: Integer) of object; TRealICQGettedRemoteControlTransmiteScreenImageEvent = procedure(Sender: TObject; ALoginName: String; ALeft, ATop, AWidth, AHeight: Integer; AP: TPoint; ABitmap: TBitmap) of object; TRealICQGettedRemoteControlTransmiteCursorPosEvent = procedure(Sender: TObject; ALoginName: String; AP: TPoint) of object; TRealICQCancelControlRemoteControlTransmiteEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQSendedRemoteControlTransmiteControlRequestEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQGettedRemoteControlTransmiteControlRequestEvent = procedure(Sender: TObject; ALoginName: String) of object; TRealICQGettedRemoteControlTransmiteControlResponseEvent = procedure(Sender: TObject; ALoginName: String; AAcceptted: Boolean) of object; TRealICQGettedRemoteControlTransmiteBeControlResponseEvent = procedure(Sender: TObject; ALoginName: String; AAcceptted: Boolean) of object; TRealICQGettedSendFolderRequestEvent = procedure(Sender: TObject; AID, ACount: Cardinal; ALoginName: String; AFilesStream: TStream) of object; TRealICQCanceledSendFolderEvent = procedure(Sender: TObject; AID: Cardinal; ALoginName: String) of object; TRealICQGetNotReadMessageCountEvent = procedure(Sender: TObject; iCount: Integer) of object; TRealICQGetSystemNoticesCountEvent = procedure(Sender: TObject; iCount: Integer; NoticesRecords: array of TSystemNotices) of object; const ImageX2_DLL_PACH = 'binary\ImageX2.dll'; IEContext_DLL_PACH = 'binary\IEContext.dll'; AppCentreCom_DLL_PACH = 'binary\AppCentreCom.dll'; implementation uses RealICQClient, MD5; { TWebTabRecord } function TWebTabRecord.GetIconFile: String; var FilePath, AFileName: String; begin FilePath := TRealICQClient.GetDownloadFileDir; AFileName := FilePath + Icon; Result := AFileName; end; {TRealICQUser} function TRealICQUser.GetRealICQPtoPBox: TObject; begin if FRealICQPtoPBox = nil then begin FRealICQPtoPBox := TRealICQPtoPBox.Create(LoginName, FRealICQClient as TRealICQClient, True, True); end; Result := FRealICQPtoPBox; end; function TRealICQUser.IsNeedRequestUserStatus: Boolean; begin Result := (LastReflashLoginStatus = 0) or ((GetTickCount - LastReflashLoginStatus) > 180000); if Result then LastReflashLoginStatus := GetTickCount; end; function TRealICQUser.GetAddress: String; begin if (LoginState <> stOffline) and (LoginState <> stHidden) then Result := Address else Result := ''; end; function TRealICQUser.GetPort: Word; begin if (LoginState <> stOffline) and (LoginState <> stHidden) then Result := FPort else Result := 0; end; procedure TRealICQUser.ClickedSNSIcon; begin FClickedSNS := True; // FLastClickSNSUpdateTime := FSNSUpdateTime; // (FRealICQClient as TRealICQClient).SaveLastSNSUpdateTime(Self); end; function TRealICQUser.GetHasNewSNSUpdate: Boolean; begin Result := False; if FClickedSNS then Exit; //Dialogs.ShowMessage(Self.FLoginName + ' ' + FloatToStr(FLastClickSNSUpdateTime) + ' ' + FloatToStr(FSNSUpdateTime)); // if FLastClickSNSUpdateTime >= FSNSUpdateTime then Exit; // Result := FSNSUpdateTime >= Now - 3; //Dialogs.ShowMessage(Format('', [FSNSUpdateTime - 3])); end; function TRealICQUser.GetHeadImageFile: String; var FilePath, FileName: String; MD5HashValue: MD5Digest; MD5HashString: String; begin Result := ''; if HeadImageHashValue = '' then Exit; FilePath := TRealICQClient.GetHeadImageDir; FileName := FilePath + HeadImageHashValue; case HeadImageFileType of htJPG: Result := FileName + '.JPG'; htGIF: Result := FileName + '.GIF'; htBMP: Result := FileName + '.BMP'; end; if FileExists(Result) then begin MD5HashValue := MD5File(Result); MD5HashString := MD5.MD5Print(MD5HashValue); if not AnsiSameText(MD5HashString, HeadImageHashValue) then begin try DeleteFile(Result); except end; end; end; end; //------------------------------------------------------------------------------ constructor TRealICQUser.Create(ALoginName: String; ARealICQClient: TObject); begin inherited Create; LoginName := ALoginName; FRealICQClient := ARealICQClient; Sex := seUnknown; LoginState := stOffline; HeadImageFileType := htNONE; Secret := slOnlyFriendCanSee; CurrentExInfoVersion := -1; SNSUpdateTime := 2; end; destructor TRealICQUser.Destroy; begin if FRealICQPtoPBox <> nil then FreeAndNil(FRealICQPtoPBox); inherited; end; { TSendFileRequestInfo } constructor TSendFileRequestInfo.Create(ALoginName: string; AObjective: TFileTransmitterObjective; AOppositeID: Cardinal; AFileLength: Int64; AFileName, AMD5Code, AFileExtImage: string); begin FLoginName := ALoginName; FObjective := AObjective; FOppositeID := AOppositeID; FFileLength := AFileLength; FFileName := AFileName; FMD5Code := AMD5Code; FFileExtImage := AFileExtImage; end; { TRealICQMessage } constructor TRealICQMessage.Create(ASender, AReceiver, AFontStr, AMessageStr: String;AIsEncryMessage:Boolean); begin inherited Create; FIsEncryMessage:=AIsEncryMessage; FSender := ASender; FReceiver := AReceiver; FFontStr := AFontStr; FMessageStr := AMessageStr; end; { TRealICQTeamMessage } constructor TRealICQTeamMessage.Create(ATeamID: String; ASender, AFontStr, AMessageStr: String;IsEncry:Boolean); begin inherited Create; FTeamID := ATeamID; FSender := ASender; FFontStr := AFontStr; FMessageStr := AMessageStr; FIsEncryMessage:=IsEncry; end; function TRealICQBranchInfo.Clone: TRealICQBranchInfo; begin Result := TRealICQBranchInfo.Create; Result.ID := ID; Result.ParentID := ParentID; Result.BranchName := BranchName; Result.OnlineEmployee := OnlineEmployee; Result.EmployeeCount := EmployeeCount; Result.IsGetUserList := IsGetUserList; end; { TRealICQTeam } function TRealICQTeam.Clone: TRealICQTeam; begin Result := TRealICQTeam.Create; Result.TeamID := TeamID; Result.TeamCaption := TeamCaption; Result.TeamCreater := TeamCreater; Result.TeamCallBoard := TeamCallBoard; Result.TeamIntro := TeamIntro; Result.TeamValidate := TeamValidate; Result.TeamManagers := TeamManagers; Result.TeamMembers := TeamMembers; Result.IsTempTeam := IsTempTeam; end; {TFace} //------------------------------------------------------------------------------ procedure TFace.SetFileName(Value: String); begin FFileName := Value; end; //------------------------------------------------------------------------------ procedure TFace.Assign(AFace: TFace); begin FName := AFace.FName; FShortCut := AFace.FShortCut; FFileName := AFace.FFileName; end; //------------------------------------------------------------------------------ constructor TFace.Create(AFileName, AShortCut, AName, AMD5Code: String; ACategory: String); begin FFileName := AFileName; FShortCut := AShortCut; FName := AName; FMD5Code := AMD5Code; FCategory := ACategory; end; end.