surongfu 发表于 2012-6-23 11:19:50

求助,创建一个图形输出所要查找的内容

本帖最后由 surongfu 于 2012-6-26 08:31 编辑

怎么创建一个gui 来读取以下文本内容

sfsdfdffddddf65465ad Password:1751 CardNo:15234123
sfsdfdffddddf65465ad Password:1752CardNo:15234124
sfsdfdffddddf65465ad Password:1753CardNo:15234125
sfsdfdffddddf65465ad Password:1754CardNo:15234126
假如绘制一个gui图形,在输入框输入15234123则显示1751,输入15234124则显示1752
假设文本路径为d:\sy.txt

邪恶海盗 发表于 2012-6-23 12:53:26

IniRead
If...Then

菜鸟表示大概要用到这两个...

Windows8 发表于 2012-6-23 18:27:43

前面的“sfsdfdffddddf”有嘛用呢?先按你说的“假如绘制一个gui图形,在输入框输入15234123则显1751,输入15234124则显示1752,假设文本路径为d:\sy.txt ”来写代码,还有啥问题回复我。
txt中写:
pwd=1751

pwd=1752

pwd=1753

pwd=1754代码:(还可以写成INPUTBOX形式,需要的话回复我)
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 354, 94, 192, 124)
$Label1 = GUICtrlCreateLabel("请输入帐号:", 8, 8, 92, 17)
$Input1 = GUICtrlCreateInput("", 104, 8, 241, 21)
$Label2 = GUICtrlCreateLabel("你的密码是:", 8, 32, 92, 17)
$Input2 = GUICtrlCreateInput("输入后才可以获取哦!", 104, 32, 241, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
$Button1 = GUICtrlCreateButton("获取", 256, 56, 89, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
      Case $Button1
                        GUICtrlSetData($Input2,IniRead("d:\sy.txt",GuiCtrlRead($Input1),"pwd","输入错误"))
        EndSwitch
WEnd

surongfu 发表于 2012-6-24 08:56:17

前面的“sfsdfdffddddf”有嘛用呢?先按你说的“假如绘制一个gui图形,在输入框输入15234123则显1751,输入1 ...
Windows8 发表于 2012-6-23 18:27 http://www.autoitx.com/images/common/back.gif


    那是日记文件日记记录格式就是那样的不能像这样
pwd=1751

pwd=1752

pwd=1753

pwd=1754

surongfu 发表于 2012-6-24 08:58:53

本帖最后由 surongfu 于 2012-6-24 08:59 编辑

我自己弄了个简洁的但是没有gui好可以复制我的没法复制$a = InputBox(0,"输入号码按确定")
$b = FileRead(".\xxj_wyj_" & @year & "-" & @mon & "-" & @MDAY & ".log")
$c = StringRegExp($b,'CardNo:'&$a&', Password:(.*?), PasswordVerify',3)
MsgBox(0,"密码是",$c)

surongfu 发表于 2012-6-24 08:59:36

而且不输入直接关掉会提示错误,找不到也会提示错误

shqf 发表于 2012-6-24 10:01:46

本帖最后由 shqf 于 2012-6-24 10:02 编辑

在3楼代码的基础上修改,log内容如你一楼所列的格式
Case $Button1
        $str = FileRead("xxj_wyj_" & @year & "-" & @mon & "-" & @MDAY & ".log")       
        If StringRegExp(GUICtrlRead($Input1), "\d+", 0) Then
                $array = StringRegExp($str, "pwd:(\d+)\h+" & GUICtrlRead($Input1), 3)
                If @error Then
                        GUICtrlSetData($Input2, "没有对应的密码")
                Else
                        GUICtrlSetData($Input2, $array)
                EndIf
        EndIf

surongfu 发表于 2012-6-24 13:54:19

在3楼代码的基础上修改,log内容如你一楼所列的格式
shqf 发表于 2012-6-24 10:01 http://www.autoitx.com/images/common/back.gif


    代码不能运行呀

shqf 发表于 2012-6-24 14:03:06

本帖最后由 shqf 于 2012-6-24 14:06 编辑

其实3楼的代码加上你自己5 楼的代码可以解决你的问题了。你已经不缺解决这个问题的au3知识了,缺的是尝试、仔细。
“不能运行”就要关注程序运行的情况,报的是哪一句出错?什么类型的错?
加上调试语句,一步步跟踪程序。打开日志文件是否正常?正则匹配结果如何?...

xms77 发表于 2012-6-24 21:42:01

自己创建个form,把7楼的代码放进去就差不多了

surongfu 发表于 2012-6-26 08:18:04

7楼的代码查找不到密码不知道怎么回事

surongfu 发表于 2012-6-26 08:32:55

回复 7# shqf



可能是我文本内容提供有误,现已经重新更新文本内容

shqf 发表于 2012-6-26 08:34:36

你试试用你提供的测试数据构成文件,再运行提供的代码。我在论坛提供的代码都是试过成功后再上传的。
你不成功,估计是你的原数据文件格式有特殊性,与你提供的测试数据有异。如你把原数据文件的一部分贴出来,你的问题应该早解决了。

surongfu 发表于 2012-6-26 10:46:54

本帖最后由 surongfu 于 2012-6-26 10:55 编辑

如果能把我这个代码整到gui里就可以查出来,昨晚试了一夜还是没整进去$a = InputBox(0,"输入号码按确定")
$b = FileRead(".\xxj_wyj_" & @year & "-" & @mon & "-" & @MDAY & ".log")
$c = StringRegExp($b,'CardNo:'&$a&', Password:(.*?), PasswordVerify',3)
MsgBox(0,"密码是",$c)不知道我这样理解对不对,执行 $Button1 按钮时执行$B+$A然后在输出显示
$c应该就是$Input2要显示的内容

shqf 发表于 2012-6-26 12:50:42

楼上的,你的正则里有“PasswordVerify”字样,且“CardNo”在“ Password”的前面,而1 楼的现在给出的文件中的数据不是这样的,没有“PasswordVerify”,“CardNo”也在“ Password”的后面,你的代码不可能成功运行的。
根据你现在给出的1楼数据,7楼代码第4 句改成如下:$array = StringRegExp($str, "Password:(\d+)\h+" & "CardNo:"&GUICtrlRead($Input1), 3)就能成功。
页: [1] 2
查看完整版本: 求助,创建一个图形输出所要查找的内容