📄 wellrsgl.bak
字号:
LOCAL T_LENGHT , T_TEMP , T_CHRAST , I
T_LENGHT = LEN(C_CHRAST)
T_CHRAST = ''
IF C_FLAG = 1
T_TEMP = BITXOR(ASC(SUBSTR(C_CHRAST,1,1)),ASC(SUBSTR(C_CHRAST,T_LENGHT,1)))
T_CHRAST = CHR(MOD(T_TEMP + INT(RAND(T_LENGHT) * 10000),256)) + T_CHRAST
FOR I = 2 TO T_LENGHT
T_TEMP = BITXOR(ASC(SUBSTR(C_CHRAST,I,1)),ASC(SUBSTR(T_CHRAST,1,1)))
T_CHRAST = CHR(MOD(T_TEMP + INT(RAND(T_LENGHT) * 10002),256)) + T_CHRAST
ENDFOR
ELSE
FOR I = 1 TO T_LENGHT - 1
T_TEMP = MOD(ASC(SUBSTR(C_CHRAST,I,1)) - INT(RAND(T_LENGHT) * 10002),256)
T_CHRAST = CHR(BITXOR(T_TEMP,ASC(SUBSTR(C_CHRAST,I + 1,1)))) + T_CHRAST
ENDFOR
T_TEMP = MOD(ASC(SUBSTR(C_CHRAST,T_LENGHT,1)) - INT(RAND(T_LENGHT) * 10000),256)
T_CHRAST = CHR(BITXOR(T_TEMP,ASC(SUBSTR(T_CHRAST,T_LENGHT - 1,1)))) + T_CHRAST
ENDIF
RETURN T_CHRAST
ENDPROC
*------
PROCEDURE checkchange
LPARAMETER C_SHUJU1 , C_SHUJU2 , C_DQH , C_ZONGSHU
LOCAL T_SUMCHANGE , I
T_SUMCHANGE = 0
IF C_SHUJU1 == C_SHUJU2
DATECHANGE( C_DQH ) = 0
FOR I = 1 TO C_ZONGSHU
T_SUMCHANGE = T_SUMCHANGE + DATECHANGE(I)
ENDFOR
IF T_SUMCHANGE = 0
RETURN .F.
ELSE
RETURN .T.
ENDIF
ELSE
DATECHANGE( C_DQH ) = 1
RETURN .T.
ENDIF
ENDPROC
*------
PROCEDURE Cginfomation
LOCAL MANGERCONTROL
MANGERCONTROL = FCREATE('Manger.tmp')
IF MANGERCONTROL < 0
A = ;
SPACE(10) + '系统管理员正在检查或修改系统使用人员的信息数据!!' + CHR(13) + ;
CHR(13) + '在此期间,系统暂不开放此功能。请等待系统管理员完成后,再运行。'
= MESSAGEBOX(A,64,'系统消息',15000)
RETURN
ELSE
= FCLOSE(MANGERCONTROL)
ERASE Manger.tmp
ENDIF
DIMENSION DATECHANGE( 2 )
IF .NOT. FILE(IMAGETEMP(18))
DO DISTILLFILE WITH 'Rsgl_01.wel' , IMAGETEMP(18) , 18
ENDIF
IF .NOT. FILEJIEMI()
= MESSAGEBOX('修改资料时遇到异常错误! 系统数据损坏!! 正在退出……',16,'异常错误',10000)
RETURN
ENDIF
LOCATE FOR LOGINNAME == CHREN(_SCREEN.CURRENTUSER,1)
DATECHANGE = 0
_SCREEN.CLOSABLE = .F.
SET CURSOR ON
SET STATUS BAR OFF
DO FORM Cginfomation
RELEASE CGINFOMATION
SET CURSOR OFF
SET STATUS BAR ON
_SCREEN.CLOSABLE = .T.
ENDPROC
*------
PROCEDURE systemmanger
LOCAL MANGERCONTROL , MESS1
MANGERCONTROL = FCREATE('Manger.tmp')
T_READONLY = .F.
IF MANGERCONTROL < 0
MESS1 = ;
'系统使用人员的信息数据正被另一个登陆的系统管理员所控制!!' + CHR(13) + CHR(13) + ;
' 系统只允许你查阅当前用户的资料,而无法对其进行修改。'
IF MESSAGEBOX(MESS1,321,'系统消息',15000) = 2
RETURN
ENDIF
T_READONLY = .T.
ENDIF
_SCREEN.CLOSABLE = .F.
SET STATUS BAR OFF
SET CURSOR ON
SET DELETED ON
FOR I = 7 TO 19
IF .NOT. FILE(IMAGETEMP(I))
DO DISTILLFILE WITH 'Rsgl_01.wel' , IMAGETEMP(I) , I
ENDIF
ENDFOR
CGADMINPASWD = .F.
DIMENSION DATECHANGE( 4 )
DATECHANGE = 0
DO FORM admin_manger
RELEASE ADMIN_MANGER
IF CGADMINPASWD
DO FORM cgadminpaswd
RELEASE CGADMINPASWD
ENDIF
IF .NOT. (T_READONLY)
= FCLOSE(MANGERCONTROL)
ERASE Manger.tmp
ENDIF
SET CURSOR OFF
SET STATUS BAR ON
_SCREEN.CLOSABLE = .T.
ENDPROC
*------
PROCEDURE showage
LPARAMETER C_BIRTHDAY
LOCAL T_OLDYEAR , T_OLDMONTH , T_OLDDAY , T_TODAYYEAR , T_TODAYMONTH , T_TODAYDAY , ;
T_OLD
T_OLDYEAR = YEAR(C_BIRTHDAY)
T_OLDMONTH = MONTH(C_BIRTHDAY)
T_OLDDAY = DAY(C_BIRTHDAY)
T_TODAYYEAR = YEAR(DATE())
T_TODAYMONTH = MONTH(DATE())
T_TODAYDAY = DAY(DATE())
DO CASE
CASE T_TODAYMONTH < T_OLDMONTH
T_OLD = T_TODAYYEAR - T_OLDYEAR - 1
CASE T_TODAYMONTH = T_OLDMONTH
IF T_TODAYDAY < T_OLDDAY
T_OLD = T_TODAYYEAR - T_OLDYEAR - 1
ELSE
T_OLD = T_TODAYYEAR - T_OLDYEAR
ENDIF
OTHERWISE
T_OLD = T_TODAYYEAR - T_OLDYEAR
ENDCASE
RETURN STR(T_OLD,3)
ENDPROC
*------
PROCEDURE checkdouble
_SCREEN.ADDPROPERTY('filemaphandle')
DECLARE INTEGER CreateFileMapping IN kernel32.Dll INTEGER , INTEGER , INTEGER , INTEGER , ;
INTEGER , STRING
DECLARE INTEGER GetLastError IN kernel32.Dll
DECLARE INTEGER CloseHandle IN kernel32.Dll INTEGER
SZNAME = 'myonly'
_SCREEN.FILEMAPHANDLE = CREATEFILEMAPPING(4294967295,0,4,0,128,SZNAME)
IF _SCREEN.FILEMAPHANDLE = 0
DECLARE LONG FindWindow IN USER32.DLL STRING , STRING
_SCREEN.FILEMAPHANDLE = FINDWINDOW(0,_SCREEN.CAPTION)
IF _SCREEN.FILEMAPHANDLE <> 0
MESSAGEBOX('该软件正在运行!系统不允许重复运行该程序!!',16,'重复运行错误')
CLOSE ALL
CLEAR DLLS
CLEAR ALL
QUIT
ELSE
CLEAR DLLS
CLEAR ALL
ENDIF
ELSE
IF GETLASTERROR() = 183
MESSAGEBOX('该软件正在运行!系统不允许重复运行该程序!!',16,'重复运行错误')
CLOSE ALL
CLEAR DLLS
CLEAR ALL
QUIT
ELSE
CLEAR DLLS
CLEAR ALL
ENDIF
ENDIF
ENDPROC
*------
PROCEDURE checkfile
LOCAL CHECKERROR
CHECKERROR = .T.
DO CASE
CASE .NOT. FILE('Rsgl_00.wel') .OR. .NOT. FILE('Rsgl_01.wel') .OR. ;
.NOT. FILE('Rsgl_02.wel')
MESSAGEBOX('警告:系统不完整!! 缺少系统所必需的核心文件!',16,'致命错误')
CASE .NOT. FILE('update.DBF') .OR. .NOT. FILE('update.FPT')
ERRORR = ;
'缺少有关察看系统更新的重要文件!!你将不能使用察看系统更新进度的功能!' + CHR(13) + ;
CHR(13) + SPACE(35) + '你确认系统继续运行吗?'
IF MESSAGEBOX(ERRORR,292,'文件丢失') = 6
CHECKERROR = .F.
ENDIF
OTHERWISE
CHECKERROR = .F.
ENDCASE
IF CHECKERROR
DECLARE INTEGER CloseHandle IN kernel32.Dll INTEGER
= CLOSEHANDLE(_SCREEN.FILEMAPHANDLE)
CLEAR DLLS
CLEAR ALL
RELEASE ALL
CLOSE ALL
QUIT
ENDIF
ENDPROC
*------
PROCEDURE checksyspaswd
LPARAMETER C_PASSWORD1 , C_PASSWORD2
LOCAL T_MESSAGE
T_MESSAGE = ''
DO CASE
CASE LEN(ALLTRIM(C_PASSWORD1)) < 4
T_MESSAGE = '密码不能为空并且不能少于4位!!'
CASE .NOT. (C_PASSWORD1 == C_PASSWORD2)
T_MESSAGE = '两次输入的密码不相匹配!!'
ENDCASE
RETURN T_MESSAGE
ENDPROC
*------
PROCEDURE clearimage
FOR EACH IMAGEFILE IN IMAGETEMP
IF FILE(IMAGEFILE)
DO CLEAFILE WITH IMAGEFILE
ENDIF
ENDFOR
ENDPROC
*------
PROCEDURE jmkeycode
LPARAMETER OLDKEY
OLDKEY = ALLTRIM(OLDKEY)
KEYLENGTH = LEN(OLDKEY)
KEY_SN = SYS(2007,OLDKEY)
DO WHILE LEN(KEY_SN) < KEYLENGTH
KEY_SN = KEY_SN + SYS(2007,KEY_SN)
ENDDO
KEY_SN = SUBSTR(KEY_SN,1,KEYLENGTH)
NEWKEY = ''
FOR I = 1 TO KEYLENGTH
IF MOD(I,2) = 0
NEWKEY = ;
NEWKEY + CHR(ASC(SUBSTR(OLDKEY,I,1)) + VAL(SUBSTR(KEY_SN,KEYLENGTH + 1 - I,1)))
ELSE
NEWKEY = ;
NEWKEY + CHR(ASC(SUBSTR(OLDKEY,I,1)) - VAL(SUBSTR(KEY_SN,KEYLENGTH + 1 - I,1)))
ENDIF
ENDFOR
RETURN NEWKEY
ENDPROC
*------
PROCEDURE usekeyen
LPARAMETER ENCODE , JMMATTER , JMKEY , LENGTH
KEYLENGTH = LEN(JMKEY)
A2 = 1
JACHRAST = ''
IF ENCODE = 1
FOR I = 1 TO LENGTH
A0 = ASC(SUBSTR(JMKEY,A2,1))
A3 = BITXOR(ASC(SUBSTR(JMMATTER,I,1)),A0)
A3 = CHR(MOD((A0 + A3),256))
JACHRAST = JACHRAST + A3
A2 = A2 + 1
IF A2 > KEYLENGTH
A2 = 1
ENDIF
ENDFOR
ELSE
FOR I = 1 TO LENGTH
A0 = ASC(SUBSTR(JMKEY,A2,1))
A3 = MOD((ASC(SUBSTR(JMMATTER,I,1)) - A0),256)
A3 = CHR(BITXOR(A3,A0))
JACHRAST = JACHRAST + A3
A2 = A2 + 1
IF A2 > KEYLENGTH
A2 = 1
ENDIF
ENDFOR
ENDIF
RETURN JACHRAST
ENDPROC
*------
PROCEDURE creatnewfile
LPARAMETER FILE_NAME , FILE_BATTER
FILE_HANDLE = FCREATE(FILE_NAME)
= FWRITE(FILE_HANDLE,FILE_BATTER)
= FCLOSE(FILE_HANDLE)
RETURN
ENDPROC
*------
PROCEDURE chinadate
LPARAMETER C_DATE , C_FLAG
LOCAL T_DTOC
IF C_FLAG
T_DTOC = TTOC(C_DATE,1)
T_DTOC = ;
SUBSTR(T_DTOC,1,4) + '年' + SUBSTR(T_DTOC,5,2) + '月' + SUBSTR(T_DTOC,7,2) + '日' + ;
' ' + SUBSTR(T_DTOC,9,2) + ':' + SUBSTR(T_DTOC,11,2)
ELSE
T_DTOC = DTOC(C_DATE,1)
T_DTOC = ;
SUBSTR(T_DTOC,1,4) + '年' + SUBSTR(T_DTOC,5,2) + '月' + SUBSTR(T_DTOC,7,2) + '日'
ENDIF
RETURN T_DTOC
ENDPROC
*------*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -