找回密码
 加入
搜索
查看: 3503|回复: 11

自动退出为哪般?

[复制链接]
发表于 2008-5-16 19:25:59 | 显示全部楼层 |阅读模式
程序中有:$oQuerys = _IEFormElementGetCollection($Form)
当访问:$Query.name   时一般情况下不会出什么问题。
可是如果根本就没有"name"这个属性时,程序会自动退出。
这不是程序的问题,现在不想让它退出。
有没有一个判断的过程,即想要如下效果:
                if not func($Query.name) then
                        $a ="NOT Exist"
                        Else
                $a= $Query.name
endif
..............
请问有没有一个这样的过程func()?
谢谢

[ 本帖最后由 jiataifeng 于 2008-5-20 19:03 编辑 ]
发表于 2008-5-16 21:04:14 | 显示全部楼层
你可设定了Com error处理函数?
 楼主| 发表于 2008-5-16 21:21:23 | 显示全部楼层
没有啊,怎么设定?
发表于 2008-5-16 21:24:49 | 显示全部楼层
= =……看帮助去吧,老大……
 楼主| 发表于 2008-5-16 21:31:29 | 显示全部楼层
好。
不过你懂就说一下嘛。
 楼主| 发表于 2008-5-17 10:33:29 | 显示全部楼层
是用OPT设置吗,帮助里好像也没有啊。
错误处理我好像在哪里见过,只是想不起来了。
 楼主| 发表于 2008-5-19 00:26:46 | 显示全部楼层
是这个吗,不过好像没反应啊。
Opt("RunErrorsFatal", 0)
好像是错的
发表于 2008-5-19 19:30:44 | 显示全部楼层
ObjEvent ( "AutoIt.Error" [, "函数名称"] )
这样就注册了一个com错误处理函数了……
看帮助啊……
 楼主| 发表于 2008-5-20 08:36:20 | 显示全部楼层
不行。
不借助com能行吗?
因为用到的某些方法com中好像没有。
_IEFormGetCollection($oIE)
_IEFormElementGetCollection($Form)
怎么用在coM中?
 楼主| 发表于 2008-5-20 08:58:11 | 显示全部楼层
原帖由 jiataifeng 于 2008-5-20 08:36 发表
不行。
不借助com能行吗?
因为用到的某些方法com中好像没有。
_IEFormGetCollection($oIE)
_IEFormElementGetCollection($Form)
怎么用在coM中?


白说无用。请结合一楼看看下面的代码如何修改。
到第四个表单时因为访问了不存在的属性,自动退出。

#include <IE.au3>
#include <Array.au3>
Dim $FormArray[500][4]
Dim $NFArray[500][500][4]
Dim $fmaxlengthc[4]
Dim $Qmaxlengthc[4]  ;每个表单获取的元素的最大长度数
dim $formname[500] ;存储表单名称
dim $j = 0

$oIE =_IECreate("http://news.sina.com.cn",1,1)
$oForms = _IEFormGetCollection($oIE)
For $Form In $oForms
        $formname[$j]=$Form.name
        $jtf=$j+1
        if @extended<>0 then 
                $numbd=@extended
                EndIf
        TrayTip("表单信息","这个页面上共有" & $numbd & "个表单"&@CRLF&"第"&$jtf&"个表单的名字为:"&$Form.name,50)
        Sleep(2000)
        $i = 0
        $oQuerys = _IEFormElementGetCollection($Form)
        For $Query In $oQuerys
                ;MsgBox(0,"t", $Query.name)
        
                $FormArray[$i][1] = $Query.name
                $FormArray[$i][2] = $Query.type
                $FormArray[$i][3] = $Query.value
                $i += 1
        Next
        
        ReDim $FormArray[$i][4]
        $txt="表单控件信息"&$formname[$j]
        _ArrayDisplay($FormArray,$txt )
        ReDim $FormArray[500][4];不知道为什么要这样
        $j += 1
        Next















[ 本帖最后由 jiataifeng 于 2008-5-20 09:04 编辑 ]
发表于 2008-5-20 15:08:27 | 显示全部楼层
真无语,看说明啊= =!!!
既然已经使用了IEUDF,那么就这样注册错误处理:
_IEErrorHandlerRegister ( "ErrNotify" )

最最简单的错误处理函数:
Func ErrNotify()
        SetError(1)
EndFunc

评分

参与人数 2金钱 +22 贡献 +15 收起 理由
jiataifeng + 10 + 5 精品文章
sanhen + 12 + 10 非常感谢你对论坛的支持!现在热人的太少了 ...

查看全部评分

 楼主| 发表于 2008-5-20 19:01:52 | 显示全部楼层
楼上说的很对。谢谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-19 01:30 , Processed in 0.085175 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表