本帖最后由 xingkekeli 于 2010-4-2 18:54 编辑
我在处理一个txt文档的时候 使用了 FileReadLine
但是我发现CPU占用很高 行数越大 占用越高 加入延时也没用
所以我就想换一个方式
使用 FileRead 先读入所有内容 然后是用StringSplit 把整个文件放到一个数组中 CPU占用降下来了
但是问题来了MsgBox(0,0,$User&'----'&$Status) ;能正确展示 '354331----发送成功'
IF $Status = "发送成功" Then ;不能匹配
期待高人解答。。Dim $q_File,$q_List,$Pust_Str,$q_Line,$q_Status,$q_User,$QPs,$I
$q_List = FileOpenDialog("请选择列表文件...", @ScriptDir, "文本文件(*.txt)")
$q_File = FileRead($q_List)
$q_Line = StringSplit($q_File,@LF)
MsgBox(0,0,$q_Line[0])
For $I = 1 To $q_Line[0] Step 1
Sleep(1)
IF Mod($I, 1000) = 0 Then
FileWrite($I&".txt", $Pust_Str)
$Pust_Str = ""
EndIF
IF $q_Line[$I] = '' Or StringInStr($q_Line[$I],"[") Then
MsgBox(0,0,'null')
Else
$QPs = StringSplit($q_Line[$I], "----", 1)
$q_User = StringMid($QPs[1],25, 11)
$q_Status = $QPs[2]
MsgBox(0,0,$q_User&'>'&$q_Status) ;这里可以正常展示
IF $q_Status = "发表成功" Then
$Pust_Str &= $q_User & ",OK;"
MsgBox(0,0,$Pust_Str) ; 根本走不到这里
ElseIF $q_Status = "无权" Then
$Pust_Str &= $q_User & ",WQ;"
ElseIF $q_Status = "未开通" Then
$Pust_Str &= $q_User & ",FB;"
ElseIF $q_Status = "待审核" Then
$Pust_Str &= $q_User & ",SH;"
EndIF
EndIF
Next
FileClose($q_File)
FileWrite($I&".txt", $Pust_Str)
2010-04-01 03:11:55 : [1/5223]xxxxxx----xxxxxx----ok
2010-04-01 03:11:59 : >>s41148xx16----发表成功
2010-04-01 03:12:00 : >>s4114xx3256----发表成功
2010-04-01 03:12:00 : >>s41149xx285----未开通
2010-04-01 03:12:01 : >>s4114xx8110----发表成功
2010-04-01 03:12:02 : >>s4115xx023----xxxxxxyyyyy
2010-04-01 03:12:09 : >>s41150xx023----无权
2010-04-01 03:12:09 : >>s411xx0780----发表成功
2010-04-01 03:12:10 : >>s41xx01904----发表成功
2010-04-01 03:12:11 : >>s41150xxx9----xxxxxxxsddfggggs
2010-04-01 03:12:17 : [2/5223]xxxxx----xxxxx----ok |