标题:一键屏蔽/恢复错误处理代码
只看楼主
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
结帖率:100%
 问题点数:0 回复次数:2 
一键屏蔽/恢复错误处理代码
因调试程序的需要,有时希望一键屏蔽程序中的错误处理代码,以便让Bug无所遁形;调试完,再一键恢复错误处理代码。
于是写了这两个函数。
因仅仅是自用吧,平时其实也没在VFP当中用到“TRY...CATCH...FINALLY”,故未作细致处理;真想要处理也行,只不过“TRY”这个单词太短,可能要用==来比较,另外,还须小心地判断大小写以及“TRY  &&注释”等复杂情况。
其实"PROCEDURE Error...ENDPROC"也有大小写问题,只不过正常情况下,这两行都不必自己写,是由IDE自动生成的,故也省略了大小写判断。

*--------------------------*
function ErrorDisabled
LPARAMETERS lcSrc
* 一键屏蔽错误处理代码
local lcRkey, lcDst, laLen, lnErr, i, lc1line
lcRkey = 0h0D0A
lcDst = ""
laLen = ALINES(lAprg, lcSrc, 0)
lnErr = 0
for i = 1 to laLen
    lc1line = lAprg[i]
    do    case
        case alltrim(lc1line) = "PROCEDURE Error"
            lnErr = 1
            lcDst = lcDst + "#if 1=2"+ lcRkey
        case alltrim(lc1line) == "ENDPROC" .and. lnErr = 1
            lnErr = 0
            lcDst = lcDst + "#endif 1=2"+ lcRkey
        #if .f.
            case alltrim(lc1line) == "TRY"
                lnErr = 3
                lcDst = lcDst + "#if 3=4"+ lcRkey
            case alltrim(lc1line) == "ENDTRY" .and. lnErr = 3
                lnErr = 0
                lcDst = lcDst + "#endif 3=4"+ lcRkey
        #endif .f.
        OTHERWISE
            lcDst = lcDst + lc1line+ lcRkey
    endcase
endfor i
lcDst = strtran(lcDst, "on error", "*~`~* on error", -1, -1, 1)
return lcDst
*--------------------------*
function ErrorEnabled
LPARAMETERS lcSrc
* 一键恢复错误处理代码
local lcDst
lcDst = strtran(lcSrc, "*~`~* on error", "on error", -1, -1, 1)
lcDst = strtran(lcDst, "#if 1=2", "PROCEDURE Error", -1, -1, 1)
lcDst = strtran(lcDst, "#endif 1=2", "ENDPROC", -1, -1, 1)
lcDst = strtran(lcDst, "#if 3=4", "TRY", -1, -1, 1)
lcDst = strtran(lcDst, "#endif 3=4", "ENDTRY", -1, -1, 1)
return lcDst
搜索更多相关主题的帖子: 处理 错误 case TRY 代码 
2022-08-20 09:06
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 
至于调用这两个函数则很简单。

假设有程序名为“Myprg.prg”,则一键屏蔽便是:
lcTmp = ErrorDisabled(fileToStr("Myprg.prg"))
strToFile(lcTmp, "Myprg.prg")

一键恢复便是:
lcTmp = ErrorEnabled(fileToStr("Myprg.prg"))
strToFile(lcTmp, "Myprg.prg")
2022-08-20 11:11
aqyejun
Rank: 3Rank: 3
等 级:论坛游民
威 望:9
帖 子:121
专家分:99
注 册:2010-6-11
得分:0 
学习了!

【独叶为舟】工作室
2022-08-22 09:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509830-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053371 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved