找回密码
 加入
搜索
查看: 10286|回复: 19

[AU3基础] 【已解决】读取txt中指定的某行某列的数据

 火.. [复制链接]
发表于 2014-11-29 16:50:33 | 显示全部楼层 |阅读模式
本帖最后由 zbezj 于 2014-11-29 23:35 编辑

1  2  3
4  5  6
7  8  9



例如上面的内容,想把这九个数读取,并赋值到数组中。请教大神,应该怎么编写代码?谢谢!

感谢,afan大神的耐心指导。此外感谢netegg、xyold1提供意见。
 楼主| 发表于 2014-11-29 16:51:47 | 显示全部楼层
在线等大神指点~~
发表于 2014-11-29 17:28:20 | 显示全部楼层
按行读取,正则分拆
 楼主| 发表于 2014-11-29 18:48:28 | 显示全部楼层
回复 3# netegg

能提供下代码? 查了好多资料,正则弄不太明白。谢谢大侠!
发表于 2014-11-29 19:03:11 | 显示全部楼层
那个中间的空格是固定一个?不用正则也行
 楼主| 发表于 2014-11-29 19:18:37 | 显示全部楼层
回复 5# netegg 中间的空格,有好几个。但是个数是一样多的。这些数据是从Excel中复制到txt中的。




4.916094237        18.47223492        17.72360797        20.07765068        2.244682034       
7.073194034        22.04562807        17.19103832        19.8221179        2.23423084       
9.03093563        24.06295487        17.4786963        20.03798008        2.242400756       
10.97421483        28.26196067        17.39201467        19.94261233        2.24527325
 楼主| 发表于 2014-11-29 19:24:43 | 显示全部楼层
最想使用这种办法,但是代码估计更难写了:

1、建立一个ListView网格
2、将Excel中的 N行8列数据,直接复制到网格中。(但是我写的代码,ListView中的值是预先定义好的,不能像inputbox那样手动输入)
3、每个数据都赋值给一个变量(数组)。
发表于 2014-11-29 19:33:22 | 显示全部楼层
复制成一维的还是二维的
 楼主| 发表于 2014-11-29 19:35:09 | 显示全部楼层
回复 8# netegg


二维的。这些数据一共有8列,但是行数不确定。
发表于 2014-11-29 21:40:00 | 显示全部楼层
本帖最后由 afan 于 2014-11-29 21:41 编辑

这数据格式很简单
#include <Array.au3>
Local $c = 5 ;列数
Local $Str = _
                '4.916094237        18.47223492        17.72360797        20.07765068        2.244682034        ' & @CRLF & _
                '7.073194034        22.04562807        17.19103832        19.8221179        2.23423084        ' & @CRLF & _
                '9.03093563        24.06295487        17.4786963        20.03798008        2.242400756        ' & @CRLF & _
                '10.97421483        28.26196067        17.39201467        19.94261233        2.24527325'
Local $aSR = StringRegExp($Str, '\S+', 3)
If @error Or Not IsInt(UBound($aSR) / $c) Then Exit
Local $a[UBound($aSR) / $c][$c]
For $i = 0 To UBound($aSR) - 1
        $a[Int($i / $c)][Mod($i, $c)] = $aSR[$i]
Next
_ArrayDisplay($a, UBound($a))
 楼主| 发表于 2014-11-29 22:03:47 | 显示全部楼层
回复 10# afan


谢谢大侠。但是我要实现的不是这个目的。


我是想直接复制TXT中的这些数据,然后粘贴到AU3的窗口中,最后对这些数据进行计算。因为这些数据不是固定不变的,每次进行计算的时候都要重新输入新的数据(有上百行的数据)。所以想到先从TXT中读取这些数据,然后赋值给 数组变量。


多谢大侠指导
 楼主| 发表于 2014-11-29 22:37:51 | 显示全部楼层
自己顶顶顶。。。
发表于 2014-11-29 22:54:13 | 显示全部楼层
;要打开的文件
Local $file = FileOpen("test.txt", 0)

; 检查打开的文件是否可为读
If $file = -1 Then
    MsgBox(4096, "错误", "不能打开文件.")
    Exit
EndIf

; 每次读取一个字符,直到文件结束(译注:读中文必须设置为远大于1的值!)(译注的译注(thesnow):ANSI编码中,一个中文为两个字符(char)/字节)
While 1
    Local $chars = FileRead($file, 1)
    If @error = -1 Then ExitLoop
    MsgBox(4096, "读取的字符:", $chars)
WEnd

FileClose($file)

先读那个文本呀
发表于 2014-11-29 23:06:02 | 显示全部楼层
回复 11# zbezj


    你只需要第8-13行…
 楼主| 发表于 2014-11-29 23:16:45 | 显示全部楼层
回复 10# afan

    8到13行,是用正则把数据提取出来,然后 把这些数据赋值给数组。 但是,这些数据是在TXT中啊。。。还是不太懂。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-28 12:21 , Processed in 0.089752 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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