找回密码
 加入
搜索
查看: 4651|回复: 8

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

  [复制链接]
发表于 2010-2-17 02:23:16 | 显示全部楼层 |阅读模式
本帖最后由 bhwhui 于 2010-2-18 05:26 编辑

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

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

怎样改进?谢谢。顺祝新年快乐!
 楼主| 发表于 2010-2-17 02:33:50 | 显示全部楼层
注:每行的数据大小不是固定的,呵呵,不要叫我用 文件大小/每行大小 然后再处理,谢谢!
发表于 2010-2-17 03:56:06 | 显示全部楼层
$aVar = StringSplit(ClipPut(), @CRLF, 1)
Msgbox(0, "", $aVar[$aVar[0]])
发表于 2010-2-17 08:49:54 | 显示全部楼层
昨天遇到恼人的事 差不多也是读取文件 原来用StringSplit代码比较长
后来看见filereadline觉得不错就全部改了 数据定义全部推倒重来
等程序全改完发现读取大文件时加载非常慢 后悔了 原文件没保存
又花了几个小时改回去
发表于 2010-2-17 16:04:49 | 显示全部楼层
回复 3# pusofalse

应该使用 clipget函数
发表于 2010-2-18 00:00:06 | 显示全部楼层
对的。 用clipget 来取得剪切板内容。 再取最后一行。
 楼主| 发表于 2010-2-18 05:25:01 | 显示全部楼层
实验了一下,楼上说的都对。
针对我的数据,程序改为:
$aVar = StringSplit(Clipget(), @CRLF, 1)
Msgbox(0, "", $aVar[$aVar[0]]-1)

以前一直担心String的大小问题以及在哪看到过Clip不能赋值String的说法,一直不敢这样用,呵呵呵,只好用倒文件的方法来用。
再看了看说明书:“字符串的最大长度是 2147483647 个字符”,可达2G啊??
谢谢各位,祝新年快乐,谢谢。
 楼主| 发表于 2010-2-18 05:29:57 | 显示全部楼层
昨天遇到恼人的事 差不多也是读取文件 原来用StringSplit代码比较长
后来看见filereadline觉得不错就全部改 ...
lainline 发表于 2010-2-17 08:49



    呵呵,同情中。。。原来我是担心Clip,String 赋值的问题才用File来中转的,现在还是发现内存操作快一些。
 楼主| 发表于 2010-2-18 05:31:05 | 显示全部楼层

现在怎么不能改帖子为“已解决”状态了 ??
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-11 04:33 , Processed in 0.082113 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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