标题:VFP 错误收集
只看楼主
weiyisc
Rank: 1
等 级:新手上路
帖 子:69
专家分:7
注 册:2009-5-17
结帖率:80.95%
已结贴  问题点数:20 回复次数:6 
VFP 错误收集
ON ERROR DO errHandler WITH ;
   ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( )
USE nodatabase  
ON ERROR  && 恢复系统错误处理程序.

PROCEDURE errHandler
   PARAMETER merror, mess, mess1, mprog, mlineno
   CLEAR
   ? '错误编号: ' + LTRIM(STR(merror))
   ? '错误信息: ' + mess
   ? '错误的代码行: ' + mess1
   ? '错误的行号: ' + LTRIM(STR(mlineno))
   ? '错误的程序: ' + mprog
ENDPROC

如果错误在表单内,怎么获取调用表单名称?
搜索更多相关主题的帖子: STR 收集 表单 VFP 错误 
2022-07-22 09:00
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:7 
有查找当前窗口的函数,函数名忘记了,可到帮助文件中查。

活到老,学到老! http://www. E-mail:hu-jj@
2022-07-22 10:00
weiyisc
Rank: 1
等 级:新手上路
帖 子:69
专家分:7
注 册:2009-5-17
得分:0 
回复 2楼 hu9jj
api?
2022-07-22 10:17
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
以下是引用weiyisc在2022-7-22 10:17:02的发言:

api?

VFP的内部函数。

活到老,学到老! http://www. E-mail:hu-jj@
2022-07-22 10:44
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:7 
SYS(1271)试试

坚守VFP最后的阵地
2022-07-22 10:57
aqyejun
Rank: 3Rank: 3
等 级:论坛游民
威 望:9
帖 子:121
专家分:99
注 册:2010-6-11
得分:7 
程序代码:
PARAMETERS nError,cMessage,cMessage1,cProgram,nLineno
SET TEXTMERGE DELIMITERS TO
SET TEXTMERGE ON
SET TEXTMERGE TO ErrorLog.txt ADDITIVE NOSHOW
\---------------------------------------------------------------------
\<<DATE( )>> <<TIME( )>> 错误记录
\程序标题: <<_Screen.Caption>>
\程序开发版本: <<VERSION(1)>>
DO CASE
CASE _Screen.WindowState=0
        \窗口状态: 普通
CASE _Screen.WindowState=1
        \窗口状态: 最小化
CASE _Screen.WindowState=2
        \窗口状态: 最大化
ENDCASE
\窗口集合数: <<_Screen.FormCount>>
\网络机器信息: <<SYS(0)>>
\
\执行程序: <<JUSTFNAME(SYS(16,1))>>
\执行程序所在目录: <<JUSTPATH(SYS(16,1))>>
\执行程序所在目录磁盘空间: <<DISKSPACE(JUSTDRIVE(SYS(16,1)))>>
\
\默认目录: <<SYS(5)>><<SYS(2003)>>
\默认目录磁盘空间: <<DISKSPACE(SYS(5))>>
\文件搜寻路径: <<SET("PATH")>>
\
\系统临时目录: <<SYS(2023)>>
\虚拟内存池大小: <<SYS(1001)>>
\
\正在使用的工作区: <<ALIAS()>>
\活动字段: <<VARREAD()>>
\
IF TYPE("_Screen.ActiveForm.Name")="C"
    \活动表单: <<_Screen.ActiveForm.Name>>
    \表单标题: <<_Screen.ActiveForm.Caption>>
    \表单基类: <<_Screen.ActiveForm.BaseClass>>
    \表单派生: <<_Screen.ActiveForm.Class>>
    \表单派生库: <<_Screen.ActiveForm.ClassLibrary>>
    \表单位置: <<SYS(1271, _Screen.ActiveForm)>>
ELSE
    \无活动表单
ENDIF
IF TYPE("_Screen.ActiveForm.ActiveControl") = "O"
    \活动控制: <<_Screen.ActiveForm.ActiveControl.Name>>
    IF TYPE("_Screen.ActiveForm.ActiveControl.Caption")="C"
        \控制标题: <<_Screen.ActiveForm.ActiveControl.Caption>>
    ENDIF
    \控件基类: <<_Screen.ActiveForm.ActiveControl.BaseClass>>
    \控件派生: <<_Screen.ActiveForm.ActiveControl.Class>>
    \控件派生库: <<_Screen.ActiveForm.ActiveControl.ClassLibrary>>
    \控件位置: <<SYS(1271, _Screen.ActiveForm.ActiveControl)>>
ELSE
    \无活动控制
ENDIF
\
\错误代号: <<nError>>
\错误信息: <<cMessage>>
\产生错误的位置: <<cProgram>>
\所在行号: <<nLineno>>
\产生错误的代码: <<cMessage1>>
\
\输出内存使用情况 -> MemoryLog.txt
\输出工作环境到 -> StatusLog.txt
*DISPLAY MEMORY NOCONSOLE TO FILE MemoryLog.txt
*DISPLAY STATUS NOCONSOLE TO FILE StatusLog.txt
\
\---------------------------------------------------------------------
SET TEXTMERGE TO
*nValue=
MESSAGEBOX("【程序发生错误!详细信息如下】:"+CHR(13)+CHR(13)+;
    "【错误代号】: "+LTRIM(STR(nError))+CHR(13)+;
    "【错误行号】: "+LTRIM(STR(nLineno))+CHR(13)+;
    "【错误信息】: "+cMessage+CHR(13)+;
    "【错误代码】: "+cMessage1+CHR(13)+;
    "【错误位置】: "+cProgram+CHR(13)+CHR(13)+;
    "【该错误已经记录到指定文件中。】"+CHR(13)+CHR(13)+;
    "【系统将立刻关闭!如果重启后还不能使用,请联系系统开发人员!】";
    , 0+16 , "错误提示信息")
CLOSE all
Clear Events
ON SHUTDOWN
CLOSE Database All &&关闭所有数据库


[此贴子已经被作者于2022-7-26 08:59编辑过]


【独叶为舟】工作室
2022-07-26 08:54
weiyisc
Rank: 1
等 级:新手上路
帖 子:69
专家分:7
注 册:2009-5-17
得分:0 
感谢各位。
2022-07-31 18:40



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




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

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