小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

星級酒店管理》系統(tǒng) 主程序

 昵稱898230 2010-02-28

* * 2003/11/21 《星級酒店管理》系統(tǒng) 主程序
* * 作者:劉雪均
* * 版權(quán)所有 (C) 2003 寶明城大酒店
* * 廣東深圳市公明鎮(zhèn)長春花園
* * 深圳, 廣東 518106
* * 中國
* * 說明: 版權(quán)所有,嚴(yán)禁非法復(fù)制,違者必窮
Clear
Clear All
Clear Dlls
Clear Macros
Close All
Set Talk Off
Set Safe Off
Set Escape Off
Set Debug Off
Set Exact Off
Set Sysmenu Save
Set Sysmenu To
Set Sysmenu Off
Set NullDisplay To ''
Set Null Off
Set Dohistory Off
Set Notify Cursor Off
Release Windows
Close Databases
Set Date To YMD
Set Hour To 24
Set Seconds Off
Set Century On
Set Deleted On
Set Resource On
Set Help On
On Shutdown Quit
Set Clock Off
With _Screen
.WindowState=2
.ZOOMBOX=.F.
.Movable=.F.
.MinButton=.F.
.MaxButton=.F.
.Closable=.F.
.Icon="Ball.ICO"
.Caption='《星級酒店管理》系統(tǒng)--均維軟件工作室'
.LockScreen=.T.
.AddObject('ScreenImg','Image')
.ScreenImg.Stretch=2
.ScreenImg.Visible=.T.
.ScreenImg.Height=Sysmetric(2)-50
.ScreenImg.Width=Sysmetric(1)
.ScreenImg.Picture='DeskTopr.jpg'
.LockScreen=.F.
Endwith
=Capslock(.T.)
=Numlock(.T.)
Public TempFile,ExePath,CurWinDir,CurPic,pCompany,ReportFile,pTeamId,pUserGroup,pUserId,pUserName,sConn,gcUpdateId,;
m.Date_From,m.Date_To,nConn,OFBLX,OFBLY,Times
Store 0 To nConn,OFBLX,OFBLY,Times
Store Date() To m.Date_From,m.Date_To
Store '' To TempFile,ExePath,CurWinDir,CurPic,pCompany,ReportFile,sConn,pTeamId,pUserGroup,pUserId,pUserName
TempFile='T'+Right(Sys(2015),7)
CurWinDir=Getenv('WinDir')
ExePath=Left(Sys(16,1),Rat("\",Sys(16,1)))
Set Default To (ExePath)
Set Resource To &ExePath.FoxUser.Dbf
Set Path To &ExePath.;&ExePath.HelpS
If !Directory("&ExePath.Temp")
Md &ExePath.Temp
Endif
Tmpfiles="&ExePath.Temp" &&設(shè)定當(dāng)前VFP使用的臨時文件目錄
=DelTmpFile() &&刪除當(dāng)前用戶系統(tǒng)目錄和VFP目錄的過時的臨時文件
*!* SET HELP TO &ExePath.HelpS\Hotel.CHM
If !File('MYDLL.DLL')
Messagebox('MYDLL.DLL丟失,程序不能正常運行!',48,'系統(tǒng)提示')
Quit
Endif
Declare String getserial In "MyDll.dll" Integer &&獲得硬盤廠商物理永久性的ID
Declare String num2txt_c In "MyDll.dll" As RMBZH Double &&小寫金額轉(zhuǎn)換成大寫金額
Declare String topy In "MyDll.dll" String &&漢字轉(zhuǎn)拼音首字母
Declare Integer changeres In "MyDll.dll" Integer, Integer &&分變率設(shè)定
Declare Integer WinExec In "kernel32" String,Integer
Declare Integer FindWindow In Win32api String, String
Declare Long BringWindowToTop In Win32API Long
Declare Long ShowWindow In Win32API Long, Long
Declare Integer SendMessage In user32 Integer,Integer,Integer,Integer
Declare Integer ShellExecute In SHELL32.Dll Integer, String, String, String, String, Integer
Declare Integer GetPrivateProfileString In Win32API As GetPrivStr String, String, String, String @, Integer, String
Declare Integer WritePrivateProfileString In Win32API As WritePrivStr String, String, String, String
Declare SHORT SetLocalTime In win32api String SystemTime
*!* Declare integer ShowWindowAsync in user32 integer hwnd, integer nCmdShow
*!* htaskbar = FindWindow("Shell_TrayWnd",0)
*!* ShowWindowAsync(htaskbar,0) &&0為隱藏任務(wù)欄,1為顯示任務(wù)欄
Set Class To MyLibs Additive &&使用自已的類庫
On Error Do Err_Fix With Error( ),Message( ),Message(1), Program( ),Lineno( ) &&錯誤跟蹤處理
If !File("&ExePath.LXJ.INI") &&判斷配置文件存在否,不存在就創(chuàng)建。
=WriteIni('REGISTRY','Local_Id',Str(DiskSpace(Sys(5),1)),'&ExePath.LXJ.INI')
=WriteIni('REGISTRY','Reg_Date',Ttoc(Datetime()),'&ExePath.LXJ.INI')
=WriteIni('REGISTRY',' ','======================','&ExePath.LXJ.INI')

=WriteIni('AUTHOR','Contact','劉 雪 均','&ExePath.LXJ.INI')
=WriteIni('AUTHOR','Title','電腦工程師','&ExePath.LXJ.INI')
=WriteIni('AUTHOR','Telephone','13613026728','&ExePath.LXJ.INI')
=WriteIni('AUTHOR',' ','======================','&ExePath.LXJ.INI')

=WriteIni('SCREEN','RandomLoad','Yes','&ExePath.LXJ.INI')
=WriteIni('SCREEN','SourceXY','Yes','&ExePath.LXJ.INI')
=WriteIni('SCREEN','Picture ','Picture.JPG','&ExePath.LXJ.INI')
=WriteIni('SCREEN','StatusBar ','On','&ExePath.LXJ.INI')
=WriteIni('SCREEN','','======================','&ExePath.LXJ.INI')

=WriteIni('CONNECT','DRIVER','SQL SERVER','&ExePath.LXJ.INI')
=WriteIni('CONNECT','SERVER',GETENV("COMPUTERNAME"),'&ExePath.LXJ.INI')
=WriteIni('CONNECT','PORTNO','1433','&ExePath.LXJ.INI')
=WriteIni('CONNECT','UID','SA','&ExePath.LXJ.INI')
=WriteIni('CONNECT','PWD','DBA','&ExePath.LXJ.INI')
=WriteIni('CONNECT','DATABASE','HOTEL','&ExePath.LXJ.INI')
=WriteIni('CONNECT',' ','======================','&ExePath.LXJ.INI')

=WriteIni('USER','LastUser','Guest','&ExePath.LXJ.INI')
=WriteIni('USER',' ','======================','&ExePath.LXJ.INI')

=WriteIni('UPDATE','NewExe','&ExePath.Main.EXE','&ExePath.LXJ.INI') &&工作站自動升級的共享目錄
=WriteIni('UPDATE','NewInfo','歡迎使用本系統(tǒng)!','&ExePath.LXJ.INI') &&提示的信息
=WriteIni('UPDATE',' ','======================','&ExePath.LXJ.INI')
=WriteIni('OCXDLLREG',GETENV("COMPUTERNAME"),'NO','&ExePath.LXJ.INI')
Endif
If Upper(ReadIni('SCREEN','StatusBar','&ExePath.LXJ.INI'))='ON'
Set Status Bar On
_vfp.StatusBar=' 歡 迎 您 使 用 本 系 統(tǒng) . . . '
Else
Set Status Bar Off
Endif
=OleRegister() &&根據(jù)INI文件判斷是否注冊O(shè)CX,DLL文件
=SetShortCut('酒店管理') &&在屏幕上創(chuàng)建快捷方式
*!*工作站是否注冊判斷
If ReadIni('REGISTRY','Local_Id','&ExePath.LXJ.INI')!=WorkJm(Iif(Empty(GetSerial(0)),Str(Diskspace(Sys(5),1)),Allt(GetSerial(0))),'HTL')
Do Form RegWork.SCX &&調(diào)用本工作站使用注冊表單
Endif
Wait Window "正在連接 SQL SERVER 數(shù)據(jù)庫 ,請稍候 ...... " At Srows()/2-10,(Scol()-45)/2 Nowait Noclear
SQLSETPROP(0,"DispLogin" ,3) &&連接不成功時不顯示ODBC登錄對話窗口
SQLSETPROP(0,"ConnectTimeOut",20) &&連接超時等待秒數(shù)設(shè)置,可取值0至600
SQLSETPROP(0,"IdleTimeout",0) &&空閑超時間隔秒數(shù),取0為無限期等待
SQLSETPROP(0,"QueryTimeOut",20) &&超時錯誤之前等待的時間
SQLSETPROP(0,"Asynchronous",.F.) &&指定結(jié)果集合是同步返回
SQLSETPROP(0,"DispWarnings",.F.) &&不顯示一個錯誤信息
*!*從配置文件中獲得SQL SERVER的加密連接串
sConn='DRIVER=SQL SERVER'
sConn=sConn+'; SERVER='+Iif(Empty(ReadIni('CONNECT','SERVER','&ExePath.LXJ.INI')),GETENV("COMPUTERNAME"),ReadIni('CONNECT','SERVER','&ExePath.LXJ.INI'))
sConn=sConn+','+Iif(Empty(ReadIni('CONNECT','PORTNO','&ExePath.LXJ.INI')),'1433',ReadIni('CONNECT','PORTNO','&ExePath.LXJ.INI'))
sConn=sConn+';UID='+ReadIni('CONNECT','UID','&ExePath.LXJ.INI')
sConn=sConn+';PWD='+Iif(Empty(ReadIni('CONNECT','PWD','&ExePath.LXJ.INI')),'',JmWd(ReadIni('CONNECT','PWD','&ExePath.LXJ.INI')))
sConn=sConn+';DATABASE='+Iif(Empty(ReadIni('CONNECT','DATABASE','&ExePath.LXJ.INI')),'NoDatabase',ReadIni('CONNECT','DATABASE','&ExePath.LXJ.INI'))
sConn=sConn+';NetWork=DBMSSOCN'
nConn=Sqlstringconnect(sConn)
Wait Clear
Do While nConn<=0
Local YN
YN=Messagebox('SQL Server 數(shù)據(jù)庫連接失敗,請選擇 !'+Chr(13)+Chr(13)+"Y ->重試 , N ->設(shè)定 , 取消 ->退出 !",67 ,'SQL Connect Info.')
_Screen.Refresh
Do Case
Case YN=6
Wait Window "正在連接 SQL SERVER 數(shù)據(jù)庫 ,請稍候 ...... " At Srows()/2-10,(Scol()-45)/2 Nowait Noclear
nConn=Sqlstringconnect(sConn)
Wait Clear
Case YN=7
Do Form SetServer.SCX &&SQL SERVER服務(wù)器連接配置
Otherwise
Quit
Endcase
Enddo

*!*下面是測試連接有效否,有效就檢測服務(wù)器注冊及過期情況等
If IsConn()
=GetServerTime() &&設(shè)定當(dāng)前機(jī)器時間為服務(wù)器的時間
If SQLEXEC(nConn,'Select * From Registry','MyCursor')>0
Select MyCursor
pCompany=Alltrim(MyCursor.Corp)
If Alltrim(MyCursor.RegKey)!=Alltrim(ServerJm(Dtoc(Ttod(MyCursor.EndTime))-TOPY(pCompany)-Dtoc(Ttod(MyCursor.BeginTime)),'HTL'))
Do Form RegServer.SCX &&調(diào)用注冊SQL SERVER服務(wù)器使用權(quán)表單
Endif
If MyCursor.BeginTime>Date()
Messagebox('系統(tǒng)時間小于注冊時間,程序不可運行!',16,'Information',3000)
Quit
Endif
If MyCursor.EndTime<DATE()
Messagebox('系統(tǒng)使用期限已到,請重新注冊!',16,'Information',3000)
Do Form RegServer.SCX
Endif
If MyCursor.EndTime<=Date()+7
Messagebox('1、使用期限快到,程序?qū)⒃?'+Alltrim(MyCursor.EndTime)+' 后終止運行,切記!'+Chr(13)+Chr(13)+'2、請盡快同 劉雪均 聯(lián)系(E-MAIL:CQTony@tom.com),謝謝!',64 ,'系統(tǒng)提示')
Endif
Else
Messagebox('注冊信息查詢失敗,請等會重試!',16,'Information',3000)
=SQLDisConnect(0)
Quit
Endif
Else
Messagebox('后臺數(shù)據(jù)庫連接失敗,請等會重試!',16,'Information',3000)
=SQLDIsConnect(0)
Quit
Endif

If Empty(pCompany)
cTitle="【 星 級 酒 店 管 理 系 統(tǒng) 】"
Else
cTitle="【 &pCompany. --- 酒店管理系統(tǒng) 】"
Endif
m.LNHWND=FindWindow(0,cTitle)
If m.LNHWND<>0
Wait Window "重 復(fù) 提 示 : 程 序 已 經(jīng) 運 行 !" At Srows()/2-3,(Scol()-34)/2 Timeout 2
BringWindowToTop(m.LNHWND)
ShowWindow(m.LNHWND,3)
Quit
Endif
*!*分變率處理,如果低于800*600就修改為800*600,否則就從配置文件進(jìn)行相應(yīng)處理,程序本身有自動適應(yīng)功能。
OFBLX=Sysmetric(1)
OFBLY=Sysmetric(2)
If OFBLX<800 Or (Upper(ReadIni('SCREEN','SourceXY','&ExePath.LXJ.INI'))='YES' And OFBLX<>800)
CHANGERES(800,600)
OFBLX=800
OFBLY=600
_Screen.ScreenImg.Height=600-50
_Screen.ScreenImg.Width=800
Endif
*!*下面是背景圖自動隨機(jī)調(diào)用或是調(diào)用用戶設(shè)定的固定圖片處理
If Upper(ReadIni('SCREEN','RandomLoad','&ExePath.LXJ.INI'))='YES'
Set Default To &ExePath.PictureS
FileNo=Adir(PicFile,"*.JPG")
If FileNo>0
FileNo=Int(Rand(Seconds())*FileNo)+1
CurPic =PicFile[FileNo,1]
Else
CurPic=ReadIni('SCREEN','Picture','&ExePath.LXJ.INI')
Endif
Release FileNo,PicFile,LNHWND
Set Default To &ExePath.
CurPic=ExePath+'PictureS\'+CurPic
Else
CurPic=ReadIni('SCREEN','Picture','&ExePath.LXJ.INI')
Endif
If !File(CurPic)
CurPic='DeskTopr.jpg'
Endif
_Screen.ScreenImg.Picture=CurPic
_Screen.Caption=cTitle
_Screen.Refresh
Do Form Login.SCX &&運行登錄用密碼校驗界面

Read Events
=VFP_INIT()
Return

Function VFP_INIT
With _Screen
.ZOOMBOX=.T.
.MinButton=.T.
.MaxButton=.T.
.BorderStyle=2
.Closable=.T.
.Movable=.T.
.Icon=""
.Caption=Chr(49653)+Chr(53673)+Chr(48889)
Endwith
Close Databases All
Close Tables All
Release Windows
Set Sysmenu To Default
Set Sysmenu On
Set Deleted Off
Set Procedure To
Set Exclusive On
Set Multilocks Off
Set Library To
Set Talk On
Set Escap On
Set Safe On
Set Exact Off
Close All
Clear Dlls
Clear All
Clear
On Key
On Error
On Escap
Return
Endfunc

*!*判斷連接是否存在或斷線,如不通并重新連接
Function IsConn
If nConn<=0
SQLDIsConnECT(0)
nConn=Sqlstringconnect(sConn)
Endif
Try
SQLEXEC(nConn,'')
Catch
nConn=-1
Finally
If nConn<=0
nConn=Sqlstringconnect(sConn)
Endif
Endtry
If nConn>0
SQLEXEC(nConn,"Select GetDate() AS SysTime ,CONVERT(VARCHAR(10),GetDate(),111) AS SysDate ",'ServerDate')
Return(.T.)
Else
Return(.F.)
Endif
Endfunc

*!*設(shè)定當(dāng)前系統(tǒng)的時間為服務(wù)器的時間
Function GetServerTime
If IsConn()
Select ServerDate
SystemTime = WTOS(Year(ServerDate.SysTime)) + ;
WTOS(Month(ServerDate.SysTime)) + ;
WTOS(Dow(ServerDate.SysTime) - 1) + ;
WTOS(Day(ServerDate.SysTime))+ ;
WTOS(Hour(ServerDate.SysTime)) + ;
WTOS(Minut(ServerDate.SysTime)) + ;
WTOS(Sec(ServerDate.SysTime))+;
WTOS(Sec(ServerDate.SysTime))
= SETLOCALTIME(SystemTime)
Else
Messagebox('后臺數(shù)據(jù)庫連接失敗,時間同步無效!',16,'Information',3000)
Endif
Endfunc
Function WTOS
Parameters WORDVAL
Private IDNAME, RETSTR
RETSTR = ""
For IDNAME = 8 To 0 Step -8
RETSTR = Chr(Int(WORDVAL/(2^IDNAME))) + RETSTR
WORDVAL = Mod(WORDVAL, (2^IDNAME))
Next
Retu RETSTR
Endfunc
Function ShowSqlError
NERRLINE=Aerror(SQLERROR)
If SqlError[5]<60000
Set Textmerge Delimiters To
Set Textmerge On
Set Textmerge To &ExePath.ERRORS\SQLERRLOG.TXT Noshow
\<> <> 錯誤記錄
For I=1 To NERRLINE
\錯誤編號:<>
\錯誤信息:<>
\ODBC 信息:<>
\ODBC 狀態(tài):<>
\ODBC 數(shù)據(jù)源錯誤編號:<>
\ODBC 連接句柄:<>
Endfor
Set Safety Off
Set Textmerge To
Local LCERRORLOG,LCUSER
If !Directory("&ExePath.Errors")
Md &ExePath.Errors
Endif
LCERRORLOG = Filetostr('&ExePath.ERRORS\SQLERRLOG.txt')
LCUSER=pUserId-'/'-pUserName
If IsConn()
SQLEXEC(nConn,'INSERT INTO SYSERROR (WORKSTATION,USERNAME,ERRORDATE,ERRORLOG) valueS (?SYS(0),?lcUSER,GETDATE(),?lcERRORLOG)')
Endif
Messagebox(SQLERROR[2],16,'SQL Error '+Transform(SQLERROR[1]))
Else
Messagebox(Right(SQLERROR[2],54),64,'SQL Error '+Transform(SQLERROR[1]))
Endif
Endfunc

*!* 程序快捷方式自定義函數(shù)
Function SetShortCut
Parameters MyProcName
wshshell = Createobject("Wscript.shell")
StrDesktop = wshshell.specialfolders("Desktop")
oMyShortcut = wshshell.createshortcut(strdesktop + "\&MyProcName..lnk")
oMyShortcut.windowstyle = 4 &&Maximized 7=Minimized 4=Normal
oMyShortcut.iconlocation = "&ExePath.Loader.EXE"
oMyShortcut.targetpath = "&ExePath.Loader.EXE"
oMyShortcut.workingdirectory = ExePath
oMyShortcut.Save
Release wshshell
Endfunc

*!* 動態(tài)SQL 查詢條件中的特殊符號‘和“的處理函數(shù)
Function DelStr
Parameters lsCurStr
lsCurStr=Strtran(lsCurStr, "'", '')
lsCurStr=Alltrim(Strtran(lsCurStr, '"', ''))
Return(lsCurStr)
Endfunc

*!* 更新站點唯一ID獲得函數(shù),以當(dāng)前用戶的機(jī)器名+系統(tǒng)登錄名+系統(tǒng)日期時間到毫秒+本程序的用戶編號
Function GetUserId
Local gcUpdateId
Set Seconds On
gcUpdateId=Strtran(Sys(0)+'|'+Right(Strtran(Ttoc(Datetime()),'/',''),15)+'|'+Alltrim(pUserId),' ','')
If Len(gcUpdateID)>46
gcUpdateID=Right(gcUpdateID,46)
Endif
Set Seconds Off
Return(gcUpdateId)
Endfunc

*!* 日期或字符串轉(zhuǎn)換為日期型或者NULL,目的是為了適應(yīng)后臺SQL SERVER的格式,方便處理
Function DC2D
Parameters lsCDStr
Do Case
Case Vartype(lsCDStr)='C'
lsCDStr=Alltrim(lsCDStr)
lsCDStr=Ctod(lsCDStr)
If Empty(lsCDStr)
Return(.Null.)
Else
Return(lsCDStr)
Endif
Case Vartype(lsCDStr)='D'
If Empty(lsCDStr)
Return(.Null.)
Else
Return(lsCDStr)
Endif
Otherwise
Return(.Null.)
Endcase
Endfunc

*!* 日期或字符串轉(zhuǎn)換為字符或NULL,目的是為了適應(yīng)前臺的格式,方便處理SQL SERVER調(diào)的數(shù)據(jù)

Function DC2C
Parameters lsDCStr
Do Case
Case Vartype(lsDCStr)='C'
lsDCStr=Alltrim(lsDCStr)
If Empty(lsDCStr)
Return(.Null.)
Else
Return(lsDCStr)
Endif
Case Vartype(lsDCStr)='D'
lsDCStr=Dtoc(lsDCStr)
If Empty(lsDCStr)
Return(.Null.)
Else
Return(lsDCStr)
Endif
Otherwise
Return(.Null.)
Endcase
Endfunc

*!* 刪除當(dāng)前系統(tǒng)用戶臨時目錄過時的臨時文件,因為系統(tǒng)有些臨時文件是不會自動刪除的
Function DelTmpFile
*!*Windows系統(tǒng)臨時目錄
gNo = Adir(gFile, GETENV("TEMP")+'\*.TMP')
For I=1 To gNo
nHand=Fopen(GETENV("TEMP")+'\'+gFile(I,1),12)
If nHand!=-1 And FDATE(GETENV("TEMP")+'\'+gFile(I,1))!=Date()
=Fclose(nHand)
Delete File GETENV("TEMP")+'\'+gFile(I,1)
Endif
Endfor
*!*當(dāng)前程序臨時目錄
gNo = Adir(gFile, '&ExePath.Temp\*.*')
For I=1 To gNo
nHand=Fopen('&ExePath.Temp\'+gFile(I,1),12)
If nHand!=-1 And FDATE('&ExePath.Temp\'+gFile(I,1))!=Date()
=Fclose(nHand)
Delete File '&ExePath.Temp\'+gFile(I,1)
Endif
Endfor
Release gFile,nHand,gNo
Endfunc

*!* 工作站第一次運行的時候注冊本程序目錄下的控件
Function OleRegister
If ALLTRIM(Upper(ReadIni('OCXDLLREG',GETENV("COMPUTERNAME"),'&ExePath.LXJ.INI')))!='YES'
IF FILE("&EXEPATH.MSCOMCTL.OCX")
WINEXEC("REGSVR32 &EXEPATH.MSCOMCTL.OCX /S",0)
ENDIF
IF FILE("&EXEPATH.MSCOMCT2.OCX")
WINEXEC("REGSVR32 &EXEPATH.MSCOMCT2.OCX /S",0)
ENDIF

IF FILE("&EXEPATH.MSMAPI32.OCX")
WINEXEC("REGSVR32 &EXEPATH.MSMAPI32.OCX /S",0)
ENDIF
IF FILE("&EXEPATH.RICHTX32.OCX")
WINEXEC("REGSVR32 &EXEPATH.RICHTX32.OCX /S",0)
ENDIF

IF FILE("&EXEPATH.MSWINSCK.OCX")
WINEXEC("REGSVR32 &EXEPATH.MSWINSCK.OCX /S",0)
ENDIF
IF FILE("&EXEPATH.MSCOMM32.OCX")
WINEXEC("REGSVR32 &EXEPATH.MSCOMM32.OCX /S",0)
ENDIF
=WriteIni('OCXDLLREG',GETENV("COMPUTERNAME") ,'YES','&ExePath.LXJ.INI')
Endif
Endfunc

*********因本程序所有的字符串加密目前采用MD5校驗,故把原有的加密函數(shù)也貼出來貢獻(xiàn)給大家參考。

*!* ***工作站安裝加密
Function WorkJm
Para YourId,JmStr
YourId=JmStr-Upper(Alltrim(YourId))
Local CurrentId
CurrentId=''
For IdName=1 To Len(YourId) Step 2
CurrentId=CurrentId+Subst(YourId,Len(YourId)-IdName,1)
Endfor
For IdName=0 To Len(YourId) Step 2
CurrentId=CurrentId+Subst(YourId,Len(YourId)-IdName,1)
Endfor
YourId=CurrentId
CurrentId=''
For IdName=1 To Len(YourId)
CurrentId=CurrentId+Chr(Bitxor(Asc(Subst(YourId,IdName,1)),IdName))
Endfor
Return(CurrentId)
Endfunc

***系統(tǒng)使用期限加密
Function ServerJm
Para GetSd,JmStr
GetSd=JmStr-Upper(Allt(GetSd))
Local CurSd
CurSd=''
For IdName=0 To Len(GetSd) Step 2
CurSd=CurSd+Subst(GetSd,Len(GetSd)-IdName,1)
Endfor
For IdName=1 To Len(GetSd) Step 2
CurSd=CurSd+Subst(GetSd,Len(GetSd)-IdName,1)
Endfor
GetSd=CurSd
CurSd=''
For IdName=1 To Len(GetSd)
CurSd=CurSd+Chr(Bitxor(Asc(Subst(GetSd,IdName,1)),IdName))
Endfor
Return(CurSd)
Endfunc

有人找我關(guān)于程序中的讀寫INI的函數(shù),其實以前早發(fā)過了,為了方便大家,就一起貼出來吧!API的定義在前面。
Function ReadIni
PARAMETERS lcHeader, lcCentry,lcFile
Private lcBuffer
lnBufferSize = 128
lcBuffer = Space(lnBufferSize)+Chr(0)
=GETPRIVSTR(lcHeader, lcCentry, "", @lcBuffer, Len(lcBuffer),lcFile)
lcBuffer = Alltrim(Left(lcBuffer, lnBufferSize))
Return Left(lcBuffer, Len(lcBuffer)-1)
Endfunc

Procedure WriteIni
PARAMETERS lcHeader, lcCentry, LCvalue,lcFile
=WRITEPRIVSTR(lcHeader, lcCentry, LCvalue, lcFile)
Return
Endproc

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多