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实现的。

定义数据结构:

  1. type
  2. TEmail = packed record
  3. Address : string[32];
  4. end;
  5. var
  6. MyData : file of TEmail;
  7. Email  : TEmail;

把TXT数据,对齐一下,按照格式生成。

  1. procedure TForm1.btn2Click(Sender: TObject);
  2. var
  3. txt:TextFile;
  4. str:string;
  5. begin
  6. AssignFile(MyData,'NewSave.txt');
  7. Rewrite(MyData);
  8. AssignFile(txt,'saved.txt');
  9. Reset(txt);
  10. while not Eof(txt) do
  11. begin
  12. str := '';
  13. Readln(txt,str);
  14. Email.Address := str;
  15. write(MyData,Email);
  16. end;
  17. CloseFile(MyData);
  18. CloseFile(txt);
  19. ShowMessage('OK');
  20. end;

然后下面是读写的示例:

  1. { 读取指定行测试 }
  2. procedure TForm1.btn1Click(Sender: TObject);
  3. var
  4. txt:TextFile;
  5. str:string;
  6. begin
  7. AssignFile(MyData,'NewSave.txt');
  8. Reset(MyData);
  9. Seek(MyData,StrToInt(Trim(edt1.Text)));
  10. Read(MyData,Email);
  11. ShowMessage(Email.Address);
  12. CloseFile(MyData);
  13. end;
  1. { 读取1万行测试 }
  2. procedure TForm1.btn3Click(Sender: TObject);
  3. var
  4. txt:TextFile;
  5. str:string;
  6. i:Integer;
  7. begin
  8. AssignFile(MyData,'NewSave.txt');
  9. AssignFile(txt,'10000email.txt');
  10. Rewrite(txt);
  11. Reset(MyData);
  12. Seek(MyData,StrToInt(edt2.Text));
  13. for I := StrToInt(edt2.Text) to StrToInt(edt3.Text) do
  14. begin
  15. Read(MyData,Email);
  16. Writeln(txt,Email.AddRess);
  17. end;
  18. CloseFile(txt);
  19. CloseFile(MyData);
  20. ShowMessage('OK');
  21. end;

Delphi 快速读取TXT 指定行的数据的更多相关文章

  1. 快速读取TXT几百万行数据, 然后插入到数据,SqlBulkCopy功能的确是有效率

    public static void Main(string[] args) { string strPath = "F:\\Download\\600.txt"; int lin ...

  2. python3读取文件指定行的三种方案

    技术背景 考虑到深度学习领域中的数据规模一般都比较大,尤其是训练集,这个限制条件对应到实际编程中就意味着,我们很有可能无法将整个数据文件的内容全部都加载到内存中.那么就需要一些特殊的处理方式,比如:创 ...

  3. python接口自动化测试--数据分离读取Excal指定单元格数据

    上一篇博客讲了怎么批量读取Excal单元格数据,现在咱们说一下怎么读取Excal指定单元格数据. 一.首先建一个Test_Main类 #!/usr/bin/python # -*- coding: U ...

  4. Python笔记(读取txt文件中的数据)

    在机器学习中,常常需要读取txt文本中的数据,这里主要整理了两种读取数据的方式 数据内容 共有四列数据,前三列为特征值,最后一列为数据标签 40920 8.326976 0.953952 3 1448 ...

  5. python读取文件指定行内容

    python读取文件指定行内容 import linecache text=linecache.getline(r'C:\Users\Administrator\Desktop\SourceCodeo ...

  6. Newtonsoft.Json读取txt文件中json数据并存到SQL service 数据库!

    using System; using System.Collections.Generic; using System.Text; using System.IO; using Newtonsoft ...

  7. Java读取Excel指定列的数据详细教程和注意事项

    本文使用jxl.jar工具类库实现读取Excel中指定列的数据. jxl.jar是通过java操作excel表格的工具类库,是由java语言开发而成的.这套API是纯Java的,并不依赖Windows ...

  8. SQL Server获取指定行的数据

    SQL Server获取指定行(如第二行)的数据   --SQL Server获取指定行(如第二行)的数据-- --法一(对象法)-- select * from ( select * , numbe ...

  9. Pandas 如何通过获取双(多)重索引获取指定行DataFrame数据

    图片看不清楚的话,可以右键选择:“在新标签页中打开图片(I)” 参数 df.loc[(a,b),c]中第一个参数元组为索引内容,a为level0索引对应的内容,b为level1索引对应的内容 因为df ...

随机推荐

  1. ML5238电池管理芯片笔记

          根据公司需要开发了以ML5238电池管理芯片+STM8S为核心的电池管理系统.由于前期对BMS系统还是了解甚少,开发起来也遇到了不少困难.再开发管理系统的同时,我也开发了管理系统的上位机, ...

  2. 放弃等待,故障到来:少一个 await 引发的 tcp 连接泄漏故障

    更新:后来升级至 .NET Core 2.2 Preview 3 ,并将 System.Net.Http 升级至 4.3.4 之后没出现这个问题,问题与 https://github.com/dotn ...

  3. express通过生成器

    express通过生成器 [ 脚手架 ] 1. 作用:可以帮助快速构建一个express项目 2. 脚手架的安装 全局安装 [可以使用npm cnpm] $ cnpm i express-genera ...

  4. python Opencv图像基础操作

    读取并显示图像 如果读取图像首先要导入OpenCV包,方法为: import cv2 读取并显示图像 img = cv2.imread("C:\test1.jpg") OpenCV ...

  5. Python subprocess ffmpeg

    # -*- coding:utf-8 -*- import os, sys, getopt import numpy as np import subprocess as sp import cv2 ...

  6. MYSQL学习笔记——连接以及存储过程

    连接 当我们需要从多个表查询数据时,我们就需要使用到连接操作,mysql支持内连接,左连接以及右连接三种连接方式. 数据库准备 首先我们创建两个表t1, t2: create table t1(i1 ...

  7. readlink 查看符号链接的文件的内容

    1. 命令功能 readlink 查看软链接文件里的真实内容. 2. 语法格式 readlink [option]  file 参数 参数说明 -f 后跟软链接文件 3. 使用范例 范例1 查看文件链 ...

  8. Java List 类型转换

    java的类型转换让人忍不住在开始编码前骂一声  FUCK! 1  子类转父类 up List<SubClass> subs = ...; List<? extends BaseCl ...

  9. [HYSBZ - 3252] 攻略

    问题描述 题目简述:树版[k取方格数] 众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏.今天他得到了一款新游戏<XX 半岛>,这款游戏有n个场景(scene),某 ...

  10. 两个list 合并后去除掉重复removeAll()的,然后再随机获取最后list中的 几个值

    public static void test1(){ String s1="1,2,5,3,6,9"; String n1[]=s1.split(","); ...