Stryker 发表于 2013-8-10 15:46:52

怎样将逐行读到的文本文件信息在读取完毕后全部输出到label上进行显示

需求是这样:从日志文件中逐行读取日志信息,然后将所有读到的信息都显示在label上,要求能换行
如果有高手能把整个代码附上最好,如果不行就告诉我用什么函数,我自己可以研究的,先谢过了!

fangbaiyu 发表于 2013-8-10 21:20:05

本帖最后由 fangbaiyu 于 2013-8-10 21:21 编辑

具体的不知道怎么弄不过有个用户自定义函数"时间日志管理"
LZ可以自己研究研究
Label的不会,Edit的照着例子弄了个#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <EventLog.au3>

#region
Global $hMainForm = GUICreate("日志", 801, 601, 192, 114)
Global $Group1 = GUICtrlCreateGroup("应用程序", 8, 8, 250, 580)
Global $gu_nEdit1 = GUICtrlCreateEdit("", 16, 32, 230, 550)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $Group2 = GUICtrlCreateGroup("安全性", 272, 8, 250, 580)
Global $gu_nEdit2 = GUICtrlCreateEdit("", 280, 32, 230, 550)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $Group3 = GUICtrlCreateGroup("系统", 536, 8, 250, 580)
Global $gu_nEdit3 = GUICtrlCreateEdit("", 544, 32, 230, 550)
GUICtrlCreateGroup("", -99, -99, 1, 1)
#endregion


_Main()
Exit

Func _Main()
        GUISetState(@SW_SHOW)

        _EventReadApp()
        _EventReadSec()
        _EventReadSys()

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

                EndSwitch
        WEnd
        GUIDelete()
EndFunc

Func _EventReadApp()
        _EventRead("", "Application", True, False, $gu_nEdit1)
EndFunc

Func _EventReadSec()
        _EventRead("", "Security", True, False, $gu_nEdit2)
EndFunc

Func _EventReadSys()
        _EventRead("", "System", True, False, $gu_nEdit3)
EndFunc

Func _EventRead($sServerName, $sSourceName, $fRead, $fForward, $nEdit)
        Local $i
        Local $hEventLog = _EventLog__Open($sServerName, $sSourceName)
        Local $iCounts = _EventLog__Count($hEventLog)
        For $i = 1 To $iCounts Step 1
                $aEvent = _EventLog__Read($hEventLog, $fRead, $fForward, $i)
                _EditWrite($nEdit, "结果 ............: " & $aEvent)
                _EditWrite($nEdit, "记录数 .....: " & $aEvent)
                _EditWrite($nEdit, "项目提交的日期 .........: " & $aEvent & " " & $aEvent)
                _EditWrite($nEdit, "项目被接收并被写入日志的日期 .........: " & $aEvent & " " & $aEvent)
                _EditWrite($nEdit, "事件标识 ..........: " & $aEvent)
                _EditWrite($nEdit, "事件类型 ..............: " & $aEvent)
                _EditWrite($nEdit, "事件类型字符串 ..............: " & $aEvent)
                _EditWrite($nEdit, "事件科目 ..........: " & $aEvent)
                _EditWrite($nEdit, "事件来源 ............: " & $aEvent)
                _EditWrite($nEdit, "计算机名 ..........: " & $aEvent)
                _EditWrite($nEdit, "用户名 ..........: " & $aEvent)
                _EditWrite($nEdit, "事件描述 .......: " & $aEvent)
                _EditWrite($nEdit, @CRLF)
        Next
        _EventLog__Close($hEventLog)
EndFunc

Func _EditWrite($nEdit, $sMessage)
        GUICtrlSetData($nEdit, $sMessage & @CRLF, 1)
EndFunc

menfan1 发表于 2013-8-11 09:43:55

改成多线程更好哈。。

runanchor 发表于 2013-8-11 10:28:18

,这个应该很简单的

runanchor 发表于 2013-8-11 10:31:49

ControlSetText ( "title", "text", controlID, "new text" [, flag] )
controlid 为你的lableID,newtext 为管理日志中的值

Stryker 发表于 2013-8-12 23:39:28

回复 2# fangbaiyu
多谢大侠,可能是我没说清,我要读取的日志不是系统日志,是我一个软件生成的日志,但是非常感谢贴了代码供我参考,可能label确实应该改成edit,这样输出的内容还可以进行下一步操作
再次感谢!

Stryker 发表于 2013-8-12 23:40:25

回复 3# menfan1
。。。。。这个要多线程么,求教啊{:face (382):}

Stryker 发表于 2013-8-12 23:42:16

回复 5# runanchor
多谢大侠,我决定把实现从label改成edit了,明天班上就闹起{:face (411):}
页: [1]
查看完整版本: 怎样将逐行读到的文本文件信息在读取完毕后全部输出到label上进行显示