找回密码
 加入
搜索
查看: 5789|回复: 13

[GUI管理] 救教:如何把文本中的一定内容导入列表框【已解决】

  [复制链接]
发表于 2012-8-29 08:54:39 | 显示全部楼层 |阅读模式
本帖最后由 ndyzx 于 2012-9-1 13:43 编辑
Deployment Image Servicing and Management tool
Version: 6.2.9200.16384

映像的详细信息: D:\TDDOWNLOAD\cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486\sources\install.wim

索引: 1
名称: Windows 7 STARTER
描述: Windows 7 STARTER
大小: 8,119,970,326 个字节

索引: 2
名称: Windows 7 HOMEBASIC
描述: Windows 7 HOMEBASIC
大小: 8,140,142,765 个字节

索引: 3
名称: Windows 7 HOMEPREMIUM
描述: Windows 7 HOMEPREMIUM
大小: 8,581,939,355 个字节

索引: 4
名称: Windows 7 PROFESSIONAL
描述: Windows 7 PROFESSIONAL
大小: 8,463,989,395 个字节

索引: 5
名称: Windows 7 ULTIMATE
描述: Windows 7 ULTIMATE
大小: 8,624,220,791 个字节

The operation completed successfully.

D:\>
如上,我要在列表框中显示如下:
1、 Windows 7 STARTER
2、Windows 7 HOMEPREMIUM
3、Windows 7 HOMEPREMIUM
......

最好用正则怎么实现,请指教。
发表于 2012-8-29 10:00:45 | 显示全部楼层
你确定:2、Windows 7 HOMEPREMIUM
而不是:2、Windows 7 HOMEBASIC
发表于 2012-8-29 10:04:55 | 显示全部楼层
呵呵,跟踪中。。
 楼主| 发表于 2012-8-29 15:04:11 | 显示全部楼层
回复 2# 水木子
是不定的,因为该文本文件是用DISM.EXE提取不同映像的MXL件。
发表于 2012-8-29 16:23:49 | 显示全部楼层
#include <Array.au3>

$hFile = FileOpen ( "aaa.txt" )
$i = 1
$sStr = ""
$sLine = FileReadLine ($hFile)
While @error = 0
        $sTmp = StringRegExpReplace($sLine, "名称: (.*)", "$1")
        If @error = 0 And @extended <> 0 Then
                $sStr =$sStr & $i & "、" & $sTmp & @LF
                $i = $i+1
        EndIf
        $sLine = FileReadLine ($hFile)
WEnd

$aArray = StringSplit($sStr,@LF)
_ArrayDisplay($aArray)
 楼主| 发表于 2012-8-29 16:44:21 | 显示全部楼层
回复 5# duck904
谢谢,可以实现,但就是增加了一个序号跑到第一行了。
发表于 2012-8-29 17:44:40 | 显示全部楼层
回复 6# ndyzx

1.$sStr最后多了个@LF,所以最后会多个空的
2.StingSplit()时候,数组[0]表示数组元素的个数,所以GUI中第一个是个数字
自己加2个判断,处理下就好了
发表于 2012-8-29 21:50:11 | 显示全部楼层
回复 7# duck904
没尝试5楼的代码, 不知道我这样合用不?

#include <array.au3>
Local $txt = ClipGet()
$str = StringRegExp($txt, '名称: (\V+)', 3)
_ArrayDisplay($str)
发表于 2012-8-30 12:41:03 | 显示全部楼层
$str = StringRegExp($txt, '名称: (\V+)', 3)  正解
 楼主| 发表于 2012-8-30 16:58:09 | 显示全部楼层
回复 8# user3000
还是不行,还是有点乱。
 楼主| 发表于 2012-8-31 08:42:58 | 显示全部楼层
回复 1# ndyzx
沉下去了,自己再顶一下,看看还有没有更好的解决办法。
发表于 2012-8-31 09:53:16 | 显示全部楼层
楼主,你4楼、10楼的回答太“轻松”了吧。
你想用正则解决,8楼已给出核心代码了呀。
提取已是没有问题,对提取的内容稍加整理,加上序号和顿号,就能得到你所想要的。
至于如何导入到列表框中,那是GUICtrlCreateList、GUICtrlSetData等函数能办到。
因为整理、导入等是基本内容,回答的人可能就省略了,须自己再花点儿功夫的。如果是对基本的整理、导入等也不知的话,那你得把问题问仔细了。也会有人给你回答的。
如果你想用一二句语句,或就用正则来解决如何提取、整理、导入的话,那是你把问题想得太简单了。
如果只是想做伸手党的话,恐怕不如你所愿呵。

评分

参与人数 1金钱 +10 收起 理由
user3000 + 10

查看全部评分

 楼主| 发表于 2012-9-1 13:41:07 | 显示全部楼层
回复 12# shqf
很正确,其实8楼除正则外,使用剪编文本环境变量很简洁。虚心接受批评。
 楼主| 发表于 2012-9-1 13:42:10 | 显示全部楼层
回复 8# user3000
谢谢帮助。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-20 04:47 , Processed in 0.090732 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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