ac5474012 发表于 2010-8-3 16:16:59

借用楼上兄弟的代码作为分析的数据。
前79行均为楼上兄弟的代码,作为一个字符串:
3mile 发表于 2010-8-2 16:06 http://www.autoitx.com/images/common/back.gif

为什么在中间每行前面都有一个 ' 怎么去掉呢?

3mile 发表于 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
      $var&=$var_array[$i]&","
Next
MsgBox(0,'包含变量有:',"local "&StringLeft($var,StringLen($var)-1))

ac5474012 发表于 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& @CRLF)
FileClose($file2)
EndIf

Wend

FileClose($file)

hzxymkb 发表于 2010-8-5 15:33:37

1000行我想不都敢想呀!楼主真是高人!
{:face (301):}

auto 发表于 2010-8-5 19:15:43

貌似au3编辑器自带有这个功能

ac5474012 发表于 2010-8-6 09:46:58

回复 20# auto

在哪?

waxy 发表于 2010-8-6 09:58:32

回复 2# xsjtxy
兄弟,太强了,这种方法都能想到,真的很实用。

auto 发表于 2010-8-6 22:32:46

:在脚本中加入Opt("MustDeclareVars", 1)
编译前编辑器会检测变量啊
页: 1 [2]
查看完整版本: [已解决]如何检查出脚本中存在的所有变量并声明?