*------------------------

*前提:被操作的表如果已经打开,一定要先关闭

*---------------------------------------

*DBF_JM('temp.dbf',1) &&加密

*DBF_JM('temp.dbf',0) &&解密

*---------------------------------------

FUNCTION DBF_JM

    PARAMETERS filename,jm

    IF AT('.',filename)=0

        filename=filename+'.dbf' &&处理文件名

    ENDIF

    IF jm=1 &&加密

        handle=FOPEN(filename,2) &&打开文件

        keybite=FREAD(handle,1) &&读表头第一个字节

        =FSEEK(handle,0) &&指针移回第一个字节

        =FWRITE(handle,CHR(ASC(keybite)+2)) &&用比原来高2的ASCII字符改写

        =FCLOSE(handle) &&关闭文件

    ELSE &&解密

        handle=FOPEN(filename,2)

        keybite=FREAD(handle,1)

        =FSEEK(handle,0)

        =FWRITE(handle,CHR(ASC(keybite)-2)) &&用比原来低2的ASCII字符改写

        =FCLOSE(handle)

    ENDIF

ENDFUNC


*---------------------------------------


FUNCTION DBF_JieMi &&解密

    PARAMETERS lfile

    lfn=ALLTRIM(lfile)

    lh=FOPEN(lfn,12)

    =FSEEK(lh,0,0)

    =FSEEK(lh,8)

    lk1=FREAD(lh,1)

    lk2=FREAD(lh,1)

    =FSEEK(lh,0,0)

    =FSEEK(lh,8)

    =FWRITE(lh,CHR(ASC(lk1)-2),1)

    =FWRITE(lh,CHR(ASC(lk2)-2),1)

    =FCLOSE(lh)

    RETURN

ENDFUNC


FUNCTION DBF_JiaMi &&加密

    PARAMETERS lfile

    lfn=ALLTRIM(lfile)

    lh=FOPEN(lfn,12)

    =FSEEK(lh,0,0)

    =FSEEK(lh,8)

    lk1=FREAD(lh,1)

    lk2=FREAD(lh,1)

    =FSEEK(lh,0,0)

    =FSEEK(lh,8)

    =FWRITE(lh,CHR(ASC(lk1)+2),1)

    =FWRITE(lh,CHR(ASC(lk2)+2),1)

    =FCLOSE(lh)

    RETURN

ENDFUNC


发表评论