找回密码
 加入
搜索
查看: 3257|回复: 7

[AU3基础] 【已解决】同一个正则提取出来为什么下拉框和列表框显示的数目不同

  [复制链接]
发表于 2012-9-3 00:37:38 | 显示全部楼层 |阅读模式
本帖最后由 ndyzx 于 2012-9-3 11:46 编辑

文本文件取自论坛如下:
<SCRIPT type=text/javascript>100</SCRIPT>
<TD>2011/01/10</TD>
<TD></TD>
<TD>2011/01/11</TD>
<TD>2011/01/12</TD>

<SCRIPT type=text/javascript>101</SCRIPT>
<TD>2011/01/20</TD>
<TD>2011/01/21</TD>
<TD></TD>
<TD>2011/01/23</TD>

<SCRIPT type=text/javascript>102</SCRIPT>
<TD>2011/02/10</TD>
<TD>2011/02/20</TD>
<TD>2011/02/21</TD>
<TD>2011/02/22</TD>

<SCRIPT type=text/javascript>103</SCRIPT>
<TD>2011/02/20</TD>
<TD>2011/02/19</TD>
<TD>2011/02/19</TD>
<TD>2011/01/20</TD>
以下用下拉框列子:
#include <array.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 256, 115, 192, 124)
$Combo1 = GUICtrlCreateCombo("", 40, 32, 145, 25)
GUISetState(@SW_SHOW)
read()
#endregion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit


        EndSwitch
WEnd

Func read()
        $txt = FileRead("xu.txt")
        ClipPut($txt)
        Local $txt = ClipGet()
        $var = StringRegExp($txt, "(?m)(?<=TD>).*(?=<)", 3)

        If @error Then
                MsgBox(4096, "", "错误, 读取列表文件失败.")
        Else
                For $i = 0 To UBound($var) - 1
                        GUICtrlSetData($Combo1, $var[$i])

                Next

        EndIf

EndFunc   ;==>read
显示如图:

以下用列表框代码:
#include <array.au3>
$txt = FileRead("xu.txt")
ClipPut ( $txt )
Local $txt = ClipGet()
$str = StringRegExp($txt, "(?m)(?<=TD>).*(?=<)", 3)
_ArrayDisplay($str)
显示如下:

为什么下拉框会少了哪么多?请高人指教。

本帖子中包含更多资源

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

×
发表于 2012-9-3 09:57:55 | 显示全部楼层
#include <GuiComboBox.au3>
GUICreate('', 250, 100)
$Combo1 = GUICtrlCreateCombo("", 50, 30, 150, 25)
GUISetState()
Read()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case -3
                        Exit
        EndSwitch
WEnd

Func Read()
        $txt = FileRead("xu.txt")
        ClipPut($txt)
        Local $txt = ClipGet()
        $var = StringRegExp($txt, "(?m)(?<=<TD>)[^<]+", 3)

        If @error Then
                MsgBox(4096, "", "错误, 读取列表文件失败.")
        Else
                For $i = 0 To UBound($var) - 1
                        _GUICtrlComboBox_AddString($Combo1, $var[$i])
                Next
        EndIf
EndFunc   ;==>Read
发表于 2012-9-3 11:42:17 | 显示全部楼层
相同的都合并了
 楼主| 发表于 2012-9-3 11:43:48 | 显示全部楼层
回复 2# 水木子
谢谢前辈,已解决了,不好意思,再请教一下,我想下拉框显示第一个数据,而不是显示空白,不知怎么弄。如下图要弄成右图的样子。

本帖子中包含更多资源

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

×
发表于 2012-9-3 11:49:15 | 显示全部楼层
GUICtrlSetData(-1, "item1|item2|item3", "item3")
发表于 2012-9-3 12:02:43 | 显示全部楼层
2楼代码中,第26行下面再插入一行,试试看!
_GUICtrlComboBox_SetEditText($Combo1, 'AutoIt3')
 楼主| 发表于 2012-9-3 15:48:13 | 显示全部楼层
回复 5# happyplace
因为它不是固定值,这样是无端的增加了几行。
 楼主| 发表于 2012-9-3 15:50:33 | 显示全部楼层
回复 6# 水木子
谢谢,这样可做为下拉内容提示用,但不会自动显示下拉框第一行内容。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-30 01:34 , Processed in 0.134983 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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