找回密码
 加入
搜索
查看: 2174|回复: 8

[AU3基础] [已解决]定义的Func被说还未定义?

  [复制链接]
发表于 2011-9-4 18:34:11 | 显示全部楼层 |阅读模式
本帖最后由 chenronting 于 2011-9-5 17:16 编辑

RT:
在这里附上我的源码,希望大家看看那里出现问题了?还是说这样子的嵌套是不允许的?
#include <Constants.au3>
#RequireAdmin

Global $IniFile=@DesktopCommonDir & '\abc.ini'
Global $server=IniRead($IniFile,'Config','ServerIp','172.23.10.2')

If Not _jiancejihua() Then;检测是否加入任务计划
_jiarujihua();加入任务计划
EndIf

Local $fuwuduan=_jiancefuwuduan();检测服务器端
$Time=TimerInit()
;MsgBox(0,'服务端',$fuwuduan)
While Not $fuwuduan
        Sleep (1000)
        $fuwuduan=_jiancefuwuduan();检测服务端
        If TimerDiff($Time) > 60000 Then _tuichudingyi(1);退出标志
WEnd

Local $biaozhiwei=_xierubiaozhiwei();写入标志位
Local $Time=TimerInit()
;MsgBox(0,'标志位',$biaozhiwei)
While Not $biaozhiwei
        Sleep (1000)
$biaozhiwei=_xierubiaozhiwei();写入标志位
If TimerDiff($Time) > 60000 Then _tuichudingyi(2);退出标志
WEnd

_tuichudingyi(0)

Func _jiancejihua();检测计划
Local $foo = Run(@ComSpec & " /c " & 'schtasks  ', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
ProcessWaitClose($foo)
Local $text=StdoutRead($foo)
If StringInStr($text,"结束进程服务器")  Then
        Return 1
Else
        Return 0
EndIf
EndFunc

Func _jiarujihua();添加计划
        Run(@ComSpec & " /k " & 'schtasks /create /tn "结束进程服务器" /tr ' & @ScriptFullPath & ' /sc daily /st 03:00:00  ', "", @SW_SHOW, $STDERR_CHILD + $STDOUT_CHILD)
        Return 1
EndFunc

Func _xierubiaozhiwei();写入标志位
        If @IPAddress1 <> '0.0.0.0' And @IPAddress1 <> ' ' And @IPAddress1 <> '' Then
                $IP=@IPAddress1
        Else
                $IP=@IPAddress2
        EndIf
        Return IniWrite($IniFile,'Client',$IP,1)
EndFunc

Func _jiancefuwuduan();检测服务端
        Local $data=StringFormat('%2d年%2d月%2d日%2d时',@YEAR ,@MON,@MDAY,@HOUR)
        $data=StringReplace($data,' ','0')
        Return IniRead($IniFile,'server',$data,0);返回服务器是否已写入标志位
EndFunc

Func _jieshurenwu();结束进程
        Local $ProcessList=IniReadSection(@ScriptDir & '\ProcessList','Process')
        If Not @error Then
                For $i =1 To $ProcessList[0][0]
                        ProcessClose($ProcessList[$i][0])
                Next
        Else
                _tuichudingyi(3)
        EndIf
EndFunc

Func _dengdaifuwuqi()
        Local $Time=TimerInit()
        While Not Ping($server)
                Sleep(500)
                If TimerDiff($Time) > 300000 Then _tuichudingyi(1);超时
        WEnd
        _qidongjincheng() Then;启动进程
EndFunc

Func _qidongjincheng()
        Local $ProcessList=IniReadSection(@ScriptDir & '\ProcessList','Process')
        If Not @error Then
                For $i =1 To $ProcessList[0][0]
                        ShellExecute($ProcessList[$i][1]);启动程序
                        Sleep(300)
                Next
        Else
                _tuichudingyi(3)
        EndIf
EndFunc
        

Func _tuichudingyi($Flog=0)
        Local $data=StringFormat('%2d年%2d月%2d日%2d时',@YEAR ,@MON,@MDAY,@HOUR)
        $data=StringReplace($data,' ','0')
        Switch $Flog
                Case 0
                        FileWrite(@ScriptDir & '\log.log',$data & ':正常。' & @CRLF)
                        _jieshurenwu();结束进程
                        _dengdaifuwuqi();等待服务器
                        Exit
                Case 1
                        FileWrite(@ScriptDir & '\log.log',$data & ':超时退出。' & @CRLF)
                        Exit
                Case 2
                        FileWrite(@ScriptDir & '\log.log',$data & ':标志位无法写入。' & @CRLF)
                        Exit
                Case 3
                        FileWrite(@ScriptDir & '\log.log',$data & ':其它异常错误!。' & @CRLF)
                        Exit
        EndSwitch
EndFunc
发表于 2011-9-4 18:39:20 | 显示全部楼层
代码够凌乱。虽然我找出了问题所在。
发表于 2011-9-4 19:10:47 | 显示全部楼层
本帖最后由 netegg 于 2011-9-4 19:14 编辑

_qidongjincheng() Then;启动进程
第79行
发表于 2011-9-4 20:39:30 | 显示全部楼层
是不是却了一个ENDIF
发表于 2011-9-5 01:34:56 | 显示全部楼层
回复 4# 58fly

不是,他这个就不是个判断语法

chenronting白泡论坛了,这错误也能犯
 楼主| 发表于 2011-9-5 09:20:37 | 显示全部楼层
回复 5# netegg


    不好意思,我还没意识到我的错误?!是func的返回值无法用做判断吗?
    这里出现这个问题的原因是:我想从上而下的写,教程里说这个方法要学会,而我也觉得很不错的,第一次写,就出差错了。!

     请指正,谢谢!
 楼主| 发表于 2011-9-5 09:23:14 | 显示全部楼层
回复 5# netegg


   谢谢,我终于看到了问题,少了一个IF。。我凌乱了!
发表于 2011-9-5 14:02:23 | 显示全部楼层
第79行少了if
发表于 2011-9-5 14:02:26 | 显示全部楼层
第79行少了if
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-1 17:41 , Processed in 0.078359 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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