二級(jí)考試:VFP6技巧二則

字號(hào):

恢復(fù)丟失了的FPT文件
    由于誤操作,將自由表的備注文件刪除,致使自由表無(wú)法打開(kāi)。遇到這種情況我們可采用下述方法解決:
    1.創(chuàng)建一個(gè)新的自由表,且該自由表只含一個(gè)字段,其類(lèi)型為備注型。關(guān)閉該自由表,將其擴(kuò)展名為FPT的備注文件復(fù)制給誤刪除的自由表的備注文件,或?qū)⒃搨渥⑽募拿麨檎`刪除的自由表的備注文件即可。
    運(yùn)行下面的程序同樣也可以恢復(fù)丟失了的FPT 文件:
    accept ′請(qǐng)輸入丟失了.FPT文件的自由表名稱(chēng)(不帶擴(kuò)展名):′ to namef
    namef=trim(namef)+′.bbb′
    crea dbf &namef (aa m)
    use
    dele file &namef
    2.用VFP低級(jí)文件函數(shù)創(chuàng)建一個(gè)空的FPT文件,原自由表即可打開(kāi)。程序清單如下:
    accept ′請(qǐng)輸入丟失了.FPT文件的自由表名稱(chēng)(不帶擴(kuò)展名):′ to namef
    namef=trim(namef)+′.FPT′
    hand=fcreate(namef)
    abc=repl(chr(0),3)+chr(8)+repl(chr(0),3)+′@′+repl(chr(0),504)
    =fwrite(hand,abc)
    =fclose(hand)
    return
    上述方法只是為丟失了FPT文件的自由表建立了一個(gè)新的FPT文件,原FPT文件中的內(nèi)容已經(jīng)丟失,無(wú)法恢復(fù)。在實(shí)際操作中若遇到這種情況,是恢復(fù)原來(lái)的FPT文件,若原FPT文件無(wú)法恢復(fù)時(shí)再采用上述方法。
    低級(jí)文件函數(shù)加密數(shù)據(jù)庫(kù)
    VFP有一個(gè)十分薄弱的環(huán)節(jié)就是數(shù)據(jù)庫(kù)的保密性差。由于.DBF文件都是敞開(kāi)式的,甚至用DOS中最簡(jiǎn)單的TYPE命令都可以瀏覽,因此,筆者從以下兩方面對(duì)數(shù)據(jù)進(jìn)行加密:
    1.在向自由表中增加數(shù)據(jù)時(shí),就進(jìn)行加密,即更新自由表時(shí)就對(duì)數(shù)據(jù)進(jìn)行加密,在讀取數(shù)據(jù)時(shí)再解密。
    2.用VFP提供的低級(jí)文件函數(shù)進(jìn)行加密,加密后的文件無(wú)法打開(kāi)、瀏覽,使用時(shí),再執(zhí)行該加密程序即可將加密的自由表還原。
    **加密數(shù)據(jù)庫(kù)程序(同時(shí)也是解密程序)**
    set talk off
    close all
    clea
    @10,10 say ″請(qǐng)輸入要加密的自由表名(含擴(kuò)展名):″ get file1 defa ′ ′
    read
    handle=fopen(″&file1″,2)
    if handle<0
    @14,10 say ″不能打開(kāi)文件!″
    =inkey(0)
    retu
    endif
    j=0
    do while .not.feof(handle)
    bb=fread(handle,1)
    cc=chr(mod(asc(bb)+128,256))
    =fseek(handle,j)
    =fwrite(handle,cc)
    ?asc(bb),asc(cc)
    j=j+1
    enddo
    =fclose(handle)
    close all
    retu