131738 发表于 2012-6-11 19:37:05

我这测试没有返回 -1 的,空图标也是返回的 0 ,那样的话,原作

这部分就没问题…
afan 发表于 2012-6-11 19:32 http://www.autoitx.com/images/common/back.gif

请看看我 14 楼的回复。。。。

user3000 发表于 2012-6-11 19:44:13

回复 15# afan

空图标? 我用不存在的文件或没有包含图标的文件再进行测试, 结果还是返回 -1 呀?
会不会又是AUTOIT版本搞出来的差异呢?
我是 3.3.7.14 及 SVN 3.3.9.4 上做的测试.

131738 发表于 2012-6-11 19:59:53

我这测试没有返回 -1 的,空图标也是返回的 0 ,那样的话,原作

这部分就没问题…
afan 发表于 2012-6-11 19:32 http://www.autoitx.com/images/common/back.gif

看测试截图
1.运行原编辑的exe程序:


2.运行汉化并修改循环语句的编译程序:

haijie1223 发表于 2012-6-11 20:05:35

回复 13# happytc


    注册日期虽然一样,但是对于编程,我比你却差得远了,向你学习才是。

131738 发表于 2012-6-11 20:13:27

本帖最后由 131738 于 2012-6-11 20:14 编辑

回复131738


    应该是担心某DLL'做工'不好, 预防提取它的图标时, 即使没到最后一个图标也出错的这 ...
user3000 发表于 2012-6-11 15:31 http://www.autoitx.com/images/common/back.gif

会过神来了,完成`全部图标提取后,继续循环就会继续返回4或5个 -1(但 0 肯定不行)满足条件退出循环!

afan 发表于 2012-6-11 20:28:23

本帖最后由 afan 于 2012-6-11 22:05 编辑

回复 20# 131738


    那样似乎并不准确,这样试试:
#include <GuiListView.au3>
#include <GuiImageList.au3>

Local $imagefile = @SystemDir & '\shell32.dll'

Local $hGui = GUICreate('', 560, 280)
Local $iListView = GUICtrlCreateListView('', 5, 5, 550, 270)
_GUICtrlListView_SetView($iListView, 1)
Local $PicID = 0
Local $hIconImage = _GUIImageList_Create(32, 32, 5, 3)
_GUICtrlListView_SetImageList($iListView, $hIconImage, 0)
Local $vTotal = _WinAPI_ExtractIconEx($imagefile, -1, 0, 0, 0), $vTotalBak = $vTotal
Local $ts = TimerInit()
While $vTotal
        _GUIImageList_AddIcon($hIconImage, $imagefile, $PicID, 1)
        _GUICtrlListView_AddItem($iListView, $PicID, $PicID)
        $vTotal -= 1
        $PicID += 1
Wend
Local $te = Round(TimerDiff($ts))
WinSetTitle($hGui, '', '包含图标数量:' & $vTotalBak & '; 耗时:' & $te & ' 毫秒。')
GUISetState()

While GUIGetMsg() + 3
WEnd或者#include <GuiListView.au3>
#include <GuiImageList.au3>

Local $imagefile = @SystemDir & '\shell32.dll'

Local $hGui = GUICreate('', 560, 280)
Local $iListView = GUICtrlCreateListView('', 5, 5, 550, 270)
_GUICtrlListView_SetView($iListView, 1)
Local $hIconImage = _GUIImageList_Create(32, 32, 5, 3)
_GUICtrlListView_SetImageList($iListView, $hIconImage, 0)
Local $vTotal = _WinAPI_ExtractIconEx($imagefile, -1, 0, 0, 0), $vTotalBak = $vTotal, $PicID
Local $ts = TimerInit()
For $PicID = 0 To $vTotal - 1
        _GUIImageList_AddIcon($hIconImage, $imagefile, $PicID, 1)
        _GUICtrlListView_AddItem($iListView, $PicID, $PicID)
Next
Local $te = Round(TimerDiff($ts))
WinSetTitle($hGui, '', '包含图标数量:' & $vTotalBak & '; 耗时:' & $te & ' 毫秒。')
GUISetState()

While GUIGetMsg() + 3
WEnd

user3000 发表于 2012-6-11 20:29:07

回复 18# 131738

前辈用的什么机器? 竟然要40秒, 相关代码应该还处理别的事情吧?
我单单显示该文件的图标, 只要5秒左右.

另外, 连A大也说空图标是返回0, 我真怀疑又是AU3版本不一致弄出的问题了.

afan 发表于 2012-6-11 20:36:41

“$Limiter = 5” “限制5” 在我看来不但不准,而且多余。
“For $iCntRow = 0 To 9999999”这个就更无语了…

afan 发表于 2012-6-11 20:43:17

回复131738

前辈用的什么机器? 竟然要40秒, 相关代码应该还处理别的事情吧?
我单单显示该文件的图标 ...
user3000 发表于 2012-6-11 20:29 http://www.autoitx.com/images/common/back.gif


    上传那个dll看看…

顽固不化 发表于 2012-6-11 20:47:50

元老遇到新问题,围观一下

user3000 发表于 2012-6-11 20:51:28

回复 24# afan

好咧, 来了!

afan 发表于 2012-6-11 20:59:44

回复 26# user3000


    嗯,我的差不多,6、7秒

131738 发表于 2012-6-11 21:00:54

元老遇到新问题,围观一下
顽固不化 发表于 2012-6-11 20:47 http://www.autoitx.com/images/common/back.gif

谢谢关注,不是遇到问题,我修改源代码解决了,这里只是想讨教这个老外的IF循环。。。

131738 发表于 2012-6-11 21:04:35

回复131738

前辈用的什么机器? 竟然要40秒, 相关代码应该还处理别的事情吧?
我单单显示该文件的图标 ...
user3000 发表于 2012-6-11 20:29 http://www.autoitx.com/images/common/back.gif

瞎估的,时间概念不足,有点老年痴呆。。。。

user3000 发表于 2012-6-11 21:25:46

回复 29# 131738


   哈哈!
   前几天网购个眼罩, 要先付款, 当时就用网银支付了.
   因为那几天值夜班, 所以叫别人代收, 但还傻傻地多给她一份钱, 说是货款...
   2天后,东西还没到, 一查竟然从北京发的. 我就跟她说了.
   她问, 这边的京东不是由广州出货吗?
   我说, 是啊. 但这回是第三方发货.
   她又问: 第三方不是先交钱吗? 你还给我钱?
   好像是哦! 我当时就有点凌乱了.
   好吧, 我也得承认自己也老年痴呆了!
页: 1 [2] 3 4
查看完整版本: [已解决]看不懂的 If 循环。。。。。。