| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 457 人关注过本帖
标题:一键屏蔽/恢复错误处理代码
只看楼主 加入收藏
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:347
专家分:326
注 册: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: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:347
专家分:326
注 册: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: 4
等 级:贵宾
威 望:10
帖 子:136
专家分:113
注 册:2010-6-11
收藏
得分:0 
学习了!

【独叶为舟】工作室
2022-08-22 09:07
快速回复:一键屏蔽/恢复错误处理代码
数据加载中...
 
   



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

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