$PBExportHeader$uo_ljws_cmd.sru forward global type uo_ljws_cmd from uo_ljws_engine end type end forward global type uo_ljws_cmd from uo_ljws_engine end type global uo_ljws_cmd uo_ljws_cmd forward prototypes public subroutine setsendmsg (s_msgframe arg_s_msg, integer arg_len) end prototypes public subroutine setsendmsg (s_msgframe arg_s_msg, integer arg_len);Int i, li_slen li_slen = 10 String ls_sendmsg = "" String ins_signStr = ">> " String MsgHead[] = {"",""} String MsgEnd[] = {"",""} //int I_ERROR = 0 //int I_MSG = 1 //int I_STATUS = 2 //int I_SETINFO = 3 //int I_DBINFO = 4 //int I_SETREQ = 5 //int I_LOGINREQ = 6 //int I_USERQUTIREQ = 7 //int I_SYSQUTIREQ = 8 IF arg_len < 0 THEN FOR i = 1 TO UpperBound(arg_s_msg.Frame_str) IF NOT IsNull(arg_s_msg.Frame_str[i]) THEN ls_sendmsg += arg_s_msg.Frame_str[i] + ins_signStr END IF NEXT ELSEIF arg_len = 0 THEN ELSEIF arg_len = 1 THEN IF NOT IsNull(arg_s_msg.Frame_str[1]) THEN ls_sendmsg = arg_s_msg.Frame_str[1] END IF ELSE FOR i = 1 TO arg_len IF NOT IsNull(arg_s_msg.Frame_str[i]) THEN ls_sendmsg += arg_s_msg.Frame_str[i] + ins_signStr END IF NEXT END IF ls_sendmsg = MsgHead[1] + String(arg_s_msg.FrameHead) + MsgEnd[1] + MsgHead[2] + ls_sendmsg + MsgEnd[2] //Unicode码 ins_send_blob_ori = Blob("") ins_send_blob_ori = Blob(ls_sendmsg,EncodingUTF16LE!) //FromUnicode() //ins_send_blob_ori = ToAnsi ( ls_sendmsg ) end subroutine on uo_ljws_cmd.create call super::create end on on uo_ljws_cmd.destroy call super::destroy end on event ue_getdatacomplete;call super::ue_getdatacomplete;String sReceived //unicode码 //sReceived = sReceived + FromUnicode(arg_bdata) ////ascii码 //sReceived = sReceived + String(arg_bdata,EncodingAnsi!) sReceived = String(arg_bdata) //sReceived = sReceived + String(arg_bdata) // //支持旧版本 // if pos(sReceived,"<") <= 0 or pos(sReceived,"",""} String MsgEnd[] = {"",""} Int I_ERROR = 0 Int I_MSG = 1 Int I_STATUS = 2 Int I_ACOUNT = 3 Int I_DBINFO = 4 Int I_SETREQ = 5 Int I_LOGINREQ = 6 Int I_RELOGINREQ = 7 Int I_CHKLOGINREQ = 8 Int I_DBSPID = 9 String arg_msg s_infomsg SInfoMsg[] Long i Long ll_MH Long ll_sPos, ll_ePos String ls_Msg s_msgframe s_msg arg_msg = sReceived ll_sPos = Pos(arg_msg,MsgHead[1]) ll_ePos = Pos(arg_msg,MsgEnd[1]) IF ll_sPos > 0 AND ll_ePos > 0 THEN ll_MH = Integer(Mid(arg_msg, ll_sPos+Len(MsgHead[1]), ll_ePos - (ll_sPos + Len(MsgHead[1])))) ELSE ll_MH = -1 END IF ll_sPos = Pos(arg_msg,MsgHead[2]) ll_ePos = Pos(arg_msg,MsgEnd[2]) IF ll_sPos > 0 AND ll_ePos > 0 THEN ls_Msg = Mid(arg_msg, ll_sPos+Len(MsgHead[2]), ll_ePos - (ll_sPos + Len(MsgHead[2]))) END IF SInfoMsg[1].Index = ll_MH SInfoMsg[1].InfoMsg = ls_Msg String signStr = ">> " string ls_ErrType int li_ErrType Int li_index String ls_TmpMsgStr i = 1 if SInfoMsg[i].Index < 0 then sys_buf_s_msgFrame.Error = SInfoMsg[i].Index sys_buf_s_msgFrame.ErrorMsg = SInfoMsg[i].InfoMsg // if pos(sys_buf_s_msgFrame.ErrorMsg,"[") > 0 and pos(sys_buf_s_msgFrame.ErrorMsg,"]") > 0 then // ls_ErrType = mid(sys_buf_s_msgFrame.ErrorMsg, pos(sys_buf_s_msgFrame.ErrorMsg,"[") + 1, pos(sys_buf_s_msgFrame.ErrorMsg,"]") - pos(sys_buf_s_msgFrame.ErrorMsg,"[") - 1) // sys_buf_s_msgFrame.Error = long(ls_ErrType) // end if end if CHOOSE CASE SInfoMsg[i].Index CASE I_ERROR //ERROR sys_buf_s_msgFrame.Error = -1 sys_buf_s_msgFrame.ErrorMsg = SInfoMsg[i].InfoMsg if pos(sys_buf_s_msgFrame.ErrorMsg,"[") > 0 and pos(sys_buf_s_msgFrame.ErrorMsg,"]") > 0 then ls_ErrType = mid(sys_buf_s_msgFrame.ErrorMsg, pos(sys_buf_s_msgFrame.ErrorMsg,"[") + 1, pos(sys_buf_s_msgFrame.ErrorMsg,"]") - pos(sys_buf_s_msgFrame.ErrorMsg,"[") - 1) sys_buf_s_msgFrame.Error = long(ls_ErrType) end if CASE I_STATUS //I_STATUS s_msg.FrameHead = I_STATUS s_msg.frame_str[1] = String(sys_Status) sys_buf_s_msgFrame.Error = 0 sys_buf_s_msgFrame.MsgType = I_STATUS setsendmsg( s_msg, 1) EVENT ue_send() //发送命令 CASE I_ACOUNT //ACOUNT li_index = 0 if Pos(SInfoMsg[i].InfoMsg , "[VersionID]") > 0 then sys_buf_s_msgFrame.version_id = Left(SInfoMsg[i].InfoMsg, Pos(SInfoMsg[i].InfoMsg, "[VersionID]") - 1) SInfoMsg[i].InfoMsg = mid(SInfoMsg[i].InfoMsg, Pos(SInfoMsg[i].InfoMsg, "[VersionID]") + len( "[VersionID]")) end if if Pos(SInfoMsg[i].InfoMsg , "[IfRegister]") > 0 then sys_buf_s_msgFrame.if_register = Integer(Left(SInfoMsg[i].InfoMsg, Pos(SInfoMsg[i].InfoMsg, "[IfRegister]") - 1)) SInfoMsg[i].InfoMsg = mid(SInfoMsg[i].InfoMsg, Pos(SInfoMsg[i].InfoMsg, "[IfRegister]") + len( "[IfRegister]")) end if IF SInfoMsg[i].InfoMsg = "Acount Must User" THEN //服务器需用户名选择帐套 sys_buf_s_msgFrame.AcountMustUser = TRUE ELSE sys_buf_s_msgFrame.AcountMustUser = FALSE DO WHILE Pos(SInfoMsg[i].InfoMsg , signStr) > 0 ls_TmpMsgStr = Left(SInfoMsg[i].InfoMsg, Pos(SInfoMsg[i].InfoMsg, signStr) - 1) li_index++ sys_buf_s_msgFrame.acount[li_index] = ls_TmpMsgStr SInfoMsg[i].InfoMsg = Right(SInfoMsg[i].InfoMsg, Len(SInfoMsg[i].InfoMsg)-Len(ls_TmpMsgStr)-Len(signStr)) LOOP END IF sys_buf_s_msgFrame.acountCnt = li_index sys_buf_s_msgFrame.Error = 0 sys_buf_s_msgFrame.MsgType = I_ACOUNT CASE I_DBINFO //DataBaseInfo //servername+database+loginid+loginpwd li_index = 0 DO WHILE Pos(SInfoMsg[i].InfoMsg , signStr) > 0 ls_TmpMsgStr = Left(SInfoMsg[i].InfoMsg, Pos(SInfoMsg[i].InfoMsg,signStr) - 1) IF li_index = 5 AND ls_TmpMsgStr = "" THEN EXIT END IF li_index++ sys_buf_s_msgFrame.frame_str[li_index] = ls_TmpMsgStr SInfoMsg[i].InfoMsg = Right(SInfoMsg[i].InfoMsg, Len(SInfoMsg[i].InfoMsg)-Len(ls_TmpMsgStr)-Len(signStr)) LOOP sys_buf_s_msgFrame.frame_str_index = li_index IF li_index = 5 THEN sys_buf_s_msgFrame.Error = 0 sys_buf_s_msgFrame.ErrorMsg = "" ELSEIF li_index = 6 THEN sys_buf_s_msgFrame.Error = 0 sys_buf_s_msgFrame.ErrorMsg = sys_buf_s_msgFrame.frame_str[6] //新注册程序 ELSEIF li_index >= 7 THEN //6:有否加密锁,7:是否已注册, 8:有效日期,9:错误信息, 10:用户级别 IF li_index = 8 THEN sys_buf_s_msgFrame.Error = 0 sys_buf_s_msgFrame.ErrorMsg = "" ELSEIF li_index >= 9 THEN sys_buf_s_msgFrame.Error = 0 sys_buf_s_msgFrame.ErrorMsg = sys_buf_s_msgFrame.frame_str[9] END IF ELSE sys_buf_s_msgFrame.Error = -1 sys_buf_s_msgFrame.ErrorMsg = "获取数据库连接信息有误,系统将不能登录" END IF sys_buf_s_msgFrame.MsgType = I_DBINFO CASE I_CHKLOGINREQ //请求返回用户信息 IF sys_login THEN s_msg.FrameHead = I_CHKLOGINREQ // s_msg.frame_str[1] = "1" s_msg.frame_str[2] = publ_userid s_msg.frame_str[3] = sys_psw s_msg.frame_str[4] = sys_DBMS s_msg.frame_str[5] = sys_ServerName s_msg.frame_str[6] = sys_userid s_msg.frame_str[7] = sys_dbpass s_msg.frame_str[8] = sys_DataBase s_msg.frame_str[9] = sys_LoginID s_msg.frame_str[10] = sys_LoginPwd s_msg.frame_str[11] = sys_dbparm setsendmsg( s_msg, 11) ELSE s_msg.FrameHead = I_CHKLOGINREQ // s_msg.frame_str[1] = "0" setsendmsg( s_msg, 1) END IF sys_buf_s_msgFrame.Error = 0 sys_buf_s_msgFrame.MsgType = I_CHKLOGINREQ EVENT ue_send() //发送命令 CASE I_DBSPID s_msg.FrameHead = I_DBSPID s_msg.frame_str[1] = String(sys_db_spid) s_msg.frame_str[2] = String(sys_Status) setsendmsg( s_msg, 2) EVENT ue_send() //发送命令 CASE 20 //client list sys_buf_s_msgFrame.frame_str[1] = SInfoMsg[1].InfoMsg CASE 100 //client list // sys_buf_s_msgFrame.frame_str[1] = SInfoMsg[1].InfoMsg messagebox("系统信息",SInfoMsg[1].InfoMsg) END CHOOSE sys_buf_new = TRUE end event event ue_send;call super::ue_send;IF ins_cancel_flag = TRUE THEN //2006.7.8取消操作 RETURN END IF Long rslt IF IsNull(ins_send_blob_ori) OR Len(ins_send_blob_ori) < 3 THEN ins_msg = 'ue_send>without send content.' EVENT ue_error(ins_msg) END IF rslt = Send( ) IF rslt = 0 THEN //ins_msg = 'Send Error' ins_msg = 'ue_send>'+ins_msg //ue_error(ins_msg) this.postevent('ue_error') END IF end event event ue_error;call super::ue_error;//messagebox("Winsock系统错误",ins_msg) end event