bhwhui 发表于 2010-2-17 02:23:16

已解决。请教获取剪贴板最后一行数据的高效算法,谢谢。

本帖最后由 bhwhui 于 2010-2-18 05:26 编辑

如题,现在剪贴板的数据很规整,文本结构,每行均以@LRLF(回车换行符)结束,每列均以空格分隔(类似学生的成绩表,姓名,语文,数学,英语.....),大小拷贝到记事本观察约110K,现在想提取最后一行的数据,然后自己再处理,有什么高效的算法?

目前自己的方法是先保存为文件,然后用
_FileReadToArray()
Return $aRecords[$aRecords - $tmp2 + 1]的方法,总觉得很笨!

怎样改进?谢谢。顺祝新年快乐!

bhwhui 发表于 2010-2-17 02:33:50

注:每行的数据大小不是固定的,呵呵,不要叫我用 文件大小/每行大小 然后再处理,谢谢!

pusofalse 发表于 2010-2-17 03:56:06

$aVar = StringSplit(ClipPut(), @CRLF, 1)
Msgbox(0, "", $aVar[$aVar])

lainline 发表于 2010-2-17 08:49:54

昨天遇到恼人的事 差不多也是读取文件 原来用StringSplit代码比较长
后来看见filereadline觉得不错就全部改了 数据定义全部推倒重来
等程序全改完发现读取大文件时加载非常慢 后悔了 原文件没保存
又花了几个小时改回去

lanfengc 发表于 2010-2-17 16:04:49

回复 3# pusofalse

应该使用 clipget函数

chenronting 发表于 2010-2-18 00:00:06

对的。 用clipget 来取得剪切板内容。 再取最后一行。

bhwhui 发表于 2010-2-18 05:25:01

实验了一下,楼上说的都对。
针对我的数据,程序改为:
$aVar = StringSplit(Clipget(), @CRLF, 1)
Msgbox(0, "", $aVar[$aVar]-1)

以前一直担心String的大小问题以及在哪看到过Clip不能赋值String的说法,一直不敢这样用,呵呵呵,只好用倒文件的方法来用。
再看了看说明书:“字符串的最大长度是 2147483647 个字符”,可达2G啊??
谢谢各位,祝新年快乐,谢谢。

bhwhui 发表于 2010-2-18 05:29:57

昨天遇到恼人的事 差不多也是读取文件 原来用StringSplit代码比较长
后来看见filereadline觉得不错就全部改 ...
lainline 发表于 2010-2-17 08:49 http://www.autoitx.com/images/common/back.gif


    呵呵,同情中。。。原来我是担心Clip,String 赋值的问题才用File来中转的,现在还是发现内存操作快一些。

bhwhui 发表于 2010-2-18 05:31:05

:face (27):
现在怎么不能改帖子为“已解决”状态了 ??
页: [1]
查看完整版本: 已解决。请教获取剪贴板最后一行数据的高效算法,谢谢。