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

[AU3基础] [已解决]list view 讀 txt 檔案數量不對程式產生錯誤

  [复制链接]
 楼主| 发表于 2016-12-30 16:04:03 | 显示全部楼层
本帖最后由 ipmitool 于 2016-12-30 16:15 编辑

回复 15# q410225


   水喔, 可以了, 另外想請問 $g_hTimer0 ~ $g_hTimer5 這個好像就不能用Eval..這要怎麼寫啊?

$g_hTimer0=TimerInit()
$g_hTimer1=TimerInit()
$g_hTimer2=TimerInit()
$g_hTimer3=TimerInit()
$g_hTimer4=TimerInit()
发表于 2016-12-30 16:29:54 | 显示全部楼层
回复 16# ipmitool


    应该是能用的吧,看看是不是别的地方错了
 楼主| 发表于 2016-12-30 16:36:24 | 显示全部楼层
回复 17# q410225


   如果是 $g_hTimer0 ~ 5
   我寫成 $g_hTimer[$j] 會有錯
   寫成 Eval('g_hTimer' & $j) 也不行耶
   望大師指點...
发表于 2016-12-30 19:54:03 | 显示全部楼层
回复 18# ipmitool



Eval('g_hTimer' & $j) =TimerInit()

这样,的确不行啊,

给你一个建议,Timer1~4只保留一个Timer1,稍微修改一下,



Func Timer1()

        _TicksToTime(Int(TimerDiff($g_hTimer1)), $g_iHour1, $g_iMins1, $g_iSecs1)
        Local $sTime1 = $g_sTime1 ; save current time to be able to test and avoid flicker..
        $g_sTime1 = StringFormat("%02i:%02i:%02i", $g_iHour1, $g_iMins1, $g_iSecs1)
         If $sTime1 <> $g_sTime1 Then _GUICtrlListView_SetItemText($hListView,0, $g_sTime1, 3)

EndFunc   ;==>Timer1


然后buttone1就不再注册Timer1的时间了,而是把他放在_add_report_items111()里
AdlibUnRegister('Timer1')
$g_hTimer1 = TimerInit()
AdlibUnRegister('Timer1')
这样每次重新读取TXT的数据,计时器就会刷新了



AdlibUnRegister('Timer1')
        $g_hTimer1 = TimerInit()
        ;Local $aNewList = _txttolistview()
        $j = UBound($aNewList) - 1
        If $aNewList[$j][2] = 'done' Then
                MsgBox(0, "", "全部是done了,可以注销了")
                AdlibUnRegister('_add_report_items111')
                AdlibUnRegister('Timer1')
        EndIf
        $aNewList[0][2] = 'done' ;先設第一個為Done
        For $j = 1 To UBound($aNewList) - 1
                If $aNewList[$j][2] = "done" Then
                        _GUICtrlListView_SetItemText($hListView, $j, "完成", 3)
                EndIf
                If $aNewList[$j][2] = "Preparing" Then
                        AdlibRegister('Timer1')
                        ExitLoop
                EndIf

                If $aNewList[$j][2] = "---" And $aNewList[$j - 1][2] = "done" Then
;~                         MsgBox(0, "", "程序准备完成,可以运行" & $aNewList[$j][1], 1)
                        Run("_" & $aNewList[$j][1] & ".exe")
                        ExitLoop
                EndIf

        Next


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2017-1-3 15:15:54 | 显示全部楼层
回复 19# q410225


    謝謝大師指點, 可是每遇到一個 Done 就要停止計時, 並且顯示在相對應的 process time 欄位
這樣只有一個 timer1 可以嗎?
发表于 2017-1-3 20:28:28 | 显示全部楼层
回复 20# ipmitool

最大的问题还是在刷新listview的时候,process time的时间也会闪烁一下,要解决感觉有点复杂,

然后我主要修改了

Func _add_report_items111()
;判断计时器该在什么状况打开关闭重置
EndFunc
Func Timer1()
;获取$j,也就是计时器应该显示的位置,
;这里你需要自己修改一下,比如在_add_report_items111里把$j写到一个ini文件里,然后在Timer1再读取,
EndFunc


感觉_add_report_items111()的四种状态的判断还是太复杂,只需要判断是‘---’就运行指定程序,停止循环就可以了。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +40 收起 理由
ipmitool + 40 Thanks~

查看全部评分

 楼主| 发表于 2017-1-4 15:29:10 | 显示全部楼层
回复 21# q410225


    感謝您的幫忙喔, 已解決嘍~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-25 11:22 , Processed in 0.078306 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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