找回密码
 加入
搜索
楼主: ac5474012

[AU3基础] [已解决]如何检查出脚本中存在的所有变量并声明?

 火.. [复制链接]
 楼主| 发表于 2010-8-3 16:16:59 | 显示全部楼层
借用楼上兄弟的代码作为分析的数据。
前79行均为楼上兄弟的代码,作为一个字符串:
3mile 发表于 2010-8-2 16:06


为什么在中间每行前面都有一个 ' 怎么去掉呢?
发表于 2010-8-3 16:47:12 | 显示全部楼层
这样应该可以理解了吧。
每行前面的 ‘ 号表示是字符串,再看行尾有连接符"_&"。就是把一个长字符串连接起来的意思。
#include <array.au3>

$Str = FileRead("换成你的程序文件.au3")
Local $var
$var_temp=StringRegExp($str,'\$\w*',3)
If Not @error Then        $var_array=_ArrayUnique($var_temp)
For $i=1 To $var_array[0]
        $var&=$var_array[$i]&","
Next
MsgBox(0,'包含变量有:',"local "&StringLeft($var,StringLen($var)-1))

评分

参与人数 1金钱 +30 收起 理由
水木子 + 30 和我想的一样

查看全部评分

 楼主| 发表于 2010-8-5 15:23:10 | 显示全部楼层
我现在用这个办法解决由变量未声明的问题.

使用方法:在脚本中加入Opt("MustDeclareVars", 1).在将弹出的错误保存在一个TXT里面.在用下面的脚本调用.你就会得到一个另一个TXT然后你打开那个TXT就明白了.
Dim $file
$file = FileOpen("D:\au3\进行\病房医生工作站\错误变量.au3")
;~ Dim $days
; 检查文件是否正常打开
If $file = -1 Then
    MsgBox(0, "错误", "无法打开目标文件。")
    Exit
EndIf

; 每次读取1行字符直到文件结尾(EOF,End-Of-File) 为止
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
$a = StringInStr($line, "可能未声明或者未创建")
if $a <> 0 then
$days = StringSplit($line, " ")
$file2 = FileOpen("D:\au3\进行\病房医生工作站\错误变量1.txt", 1)
FileWrite($file2, "dim "&$days[4]& @CRLF)
FileClose($file2)
EndIf

Wend

FileClose($file)
发表于 2010-8-5 15:33:37 | 显示全部楼层
1000行我想不都敢想呀!楼主真是高人!
发表于 2010-8-5 19:15:43 | 显示全部楼层
貌似au3编辑器自带有这个功能
 楼主| 发表于 2010-8-6 09:46:58 | 显示全部楼层
回复 20# auto

在哪?
发表于 2010-8-6 09:58:32 | 显示全部楼层
回复 2# xsjtxy
兄弟,太强了,这种方法都能想到,真的很实用。
发表于 2010-8-6 22:32:46 | 显示全部楼层
:在脚本中加入Opt("MustDeclareVars", 1)
编译前编辑器会检测变量啊
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-9 17:23 , Processed in 0.069491 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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