Delphi 快速读取TXT 指定行的数据
http://blog.csdn.net/MichaelJScofield/article/details/41869785
Delphi 快速读取TXT 指定行的数据
分类:Delphi个人挫品
(3138) (0)
继上次的问题。在提取了大量的Email 数据后。现在读取数据成了一个问题。今天我取过1~100w的数据。明天我要取100w~200w的数据。在不用数据库的情况下,我搞了一个下午。Delphi Tstringlist 和 textfile 的简单读取是满足不了的。Tstringlist加载不了大数据。普通的textfile 读取指定行,必须循环count到指定行。
想了一下午,然后想到另类点的解决方法。先对齐数据,每行规定一样的长度。比如每行是 255字节。那么100w行就是 255*100w。直接用流seek到相应位置。动手过程中,发现了更加简单的方法。是对齐数据后,配合textfile read实现的。
定义数据结构:
- type
 - TEmail = packed record
 - Address : string[32];
 - end;
 - var
 - MyData : file of TEmail;
 - Email : TEmail;
 
把TXT数据,对齐一下,按照格式生成。
- procedure TForm1.btn2Click(Sender: TObject);
 - var
 - txt:TextFile;
 - str:string;
 - begin
 - AssignFile(MyData,'NewSave.txt');
 - Rewrite(MyData);
 - AssignFile(txt,'saved.txt');
 - Reset(txt);
 - while not Eof(txt) do
 - begin
 - str := '';
 - Readln(txt,str);
 - Email.Address := str;
 - write(MyData,Email);
 - end;
 - CloseFile(MyData);
 - CloseFile(txt);
 - ShowMessage('OK');
 - end;
 
然后下面是读写的示例:
- { 读取指定行测试 }
 - procedure TForm1.btn1Click(Sender: TObject);
 - var
 - txt:TextFile;
 - str:string;
 - begin
 - AssignFile(MyData,'NewSave.txt');
 - Reset(MyData);
 - Seek(MyData,StrToInt(Trim(edt1.Text)));
 - Read(MyData,Email);
 - ShowMessage(Email.Address);
 - CloseFile(MyData);
 - end;
 
- { 读取1万行测试 }
 - procedure TForm1.btn3Click(Sender: TObject);
 - var
 - txt:TextFile;
 - str:string;
 - i:Integer;
 - begin
 - AssignFile(MyData,'NewSave.txt');
 - AssignFile(txt,'10000email.txt');
 - Rewrite(txt);
 - Reset(MyData);
 - Seek(MyData,StrToInt(edt2.Text));
 - for I := StrToInt(edt2.Text) to StrToInt(edt3.Text) do
 - begin
 - Read(MyData,Email);
 - Writeln(txt,Email.AddRess);
 - end;
 - CloseFile(txt);
 - CloseFile(MyData);
 - ShowMessage('OK');
 - end;
 
Delphi 快速读取TXT 指定行的数据的更多相关文章
- 快速读取TXT几百万行数据, 然后插入到数据,SqlBulkCopy功能的确是有效率
		
public static void Main(string[] args) { string strPath = "F:\\Download\\600.txt"; int lin ...
 - python3读取文件指定行的三种方案
		
技术背景 考虑到深度学习领域中的数据规模一般都比较大,尤其是训练集,这个限制条件对应到实际编程中就意味着,我们很有可能无法将整个数据文件的内容全部都加载到内存中.那么就需要一些特殊的处理方式,比如:创 ...
 - python接口自动化测试--数据分离读取Excal指定单元格数据
		
上一篇博客讲了怎么批量读取Excal单元格数据,现在咱们说一下怎么读取Excal指定单元格数据. 一.首先建一个Test_Main类 #!/usr/bin/python # -*- coding: U ...
 - Python笔记(读取txt文件中的数据)
		
在机器学习中,常常需要读取txt文本中的数据,这里主要整理了两种读取数据的方式 数据内容 共有四列数据,前三列为特征值,最后一列为数据标签 40920 8.326976 0.953952 3 1448 ...
 - python读取文件指定行内容
		
python读取文件指定行内容 import linecache text=linecache.getline(r'C:\Users\Administrator\Desktop\SourceCodeo ...
 - Newtonsoft.Json读取txt文件中json数据并存到SQL service 数据库!
		
using System; using System.Collections.Generic; using System.Text; using System.IO; using Newtonsoft ...
 - Java读取Excel指定列的数据详细教程和注意事项
		
本文使用jxl.jar工具类库实现读取Excel中指定列的数据. jxl.jar是通过java操作excel表格的工具类库,是由java语言开发而成的.这套API是纯Java的,并不依赖Windows ...
 - SQL Server获取指定行的数据
		
SQL Server获取指定行(如第二行)的数据 --SQL Server获取指定行(如第二行)的数据-- --法一(对象法)-- select * from ( select * , numbe ...
 - Pandas 如何通过获取双(多)重索引获取指定行DataFrame数据
		
图片看不清楚的话,可以右键选择:“在新标签页中打开图片(I)” 参数 df.loc[(a,b),c]中第一个参数元组为索引内容,a为level0索引对应的内容,b为level1索引对应的内容 因为df ...
 
随机推荐
- Java学习day11-类的成员之三:构造器(构造方法)
			
一.构造器(构造方法) 语法格式: 修饰符 类名(参数列表){ 初始化语句: } 构造器的特征: 1.它具有与类相同的名称 2.它不声明返回值类型.(与声明为void不同) 3.不能被static.f ...
 - ofbiz框架以及核心原理介绍
			
1. 什么是Ofbiz Ofbiz(Open for business)是一个开源的,基于J2EE和XML规范的,用于构建大型企业级.跨平台.跨数据库.跨应用服务器的多层.分布式电子商务类WEB应用系 ...
 - 修改url,
			
第一种场景: 无论url怎么变,表单里面的url始终不变 http://127.0.0.1:8000/CC/indexssssssssssssssssss/ url(r'^indexsssssssss ...
 - 微信公众号获取微信token
			
微信在公众号和小程序的开发都有开放文档一般看文档开发就行,很简单这里写一个小demo获取微信token,之后根据自己的业务获取信息处理即可 package com.demo.ccx; import o ...
 - 用jquery制作的简单轮播图
			
我也是进入H5前端的小菜鸟一枚,最近才进入jquery的学习,所以打算对自己的学习进行记录. 今天分享的是一个简单的轮播图,这个轮播图的特效很简单,能够进行图片的轮播以及点击相应图片,图片能够跳转到相 ...
 - lLinux的常用命令
			
命令基本格式: 命令提示符:[root@localhost ~]# root 代表当前的登录用户(linux当中管理员账号是root) @ 无实际意义 localhost ...
 - Python单例模式的设计与实现【完美版】
			
目录 1. 按 2. 本文地址 3. 通过继承单例父类来实现 4. 使用装饰器实现 4.1. 懒汉式 4.2. 饿汉式 4.2.1. 未加锁版 4.2.2. 加锁版 1. 按 众所周知,对象是解决继承 ...
 - nodejs http服务器简单搭建
			
var http = require('http') // 1. 创建 Server var server = http.createServer() // 2. 监听 request 请求事件,设置 ...
 - HDU-3810 超大容量01背包
			
题意:有n堆野兽,每堆野兽屠杀完完需要花费ti时间,可以增加金钱gi,敌法师有瞬移技能,可以从某堆野兽移到另一堆野兽,题目有给定从哪堆可以移到哪堆.最后问在满足打的金钱多余m的情况下的最少时间.数据范 ...
 - 【Leetcode周赛】比赛目录索引
			
contest 1 ~ contest 10: contest 11 ~ contest 20: contest 21 ~ contest 30 : https://www.cnblogs.com/z ...