找回密码
 加入
搜索
查看: 2918|回复: 2

[效率算法] 【已解决】FileReadLine 效率问题

[复制链接]
发表于 2010-4-2 15:53:28 | 显示全部楼层 |阅读模式
本帖最后由 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
发表于 2010-4-2 16:06:14 | 显示全部楼层
#include <Array.au3>

$Text = 'ABCDEFG ABCDEFG' & @CRLF & _ 
                'abcdefg abcdefg' & @CRLF & _ 
                '123456 123456' & @CRLF & _ 
                '中文测试'
MsgBox(64, '原字符串', $Text)

$sReg = StringRegExp($Text, '.+', 3)
_ArrayDisplay($sReg)
 楼主| 发表于 2010-4-2 18:54:02 | 显示全部楼层
已经解决了 是由于切分字符串的分隔符为 @LF
导致 $q_Status = "发表成功"&@CR

"发表成功"&@CR 当然就不能等于 "发表成功"
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-24 09:59 , Processed in 0.076175 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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