1. 程式人生 > >Delphi 快速讀取TXT 指定行的資料

Delphi 快速讀取TXT 指定行的資料

繼上次的問題。在提取了大量的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 指定資料

繼上次的問題。在提取了大量的Email 資料後。現在讀取資料成了一個問題。今天我取過1~100w的資料。明天我要取100w~200w的資料。在不用資料庫的情況下,我搞了一個下午。Delphi Tstringlist 和 textfile 的簡單讀取是滿足不了的。Tstrin

Python3.6 讀取txt內容建立資料夾;將圖片拷貝至指定資料夾,並刪除圖片

 讀取txt內容建立資料夾 # 引入模組 import os #建立資料夾 def mkdir(path): # 去除首位空格 path = path.strip() # 去除尾部 \ 符號 path = path.rstrip("\\")

C++ 使用 fscanf 命令迴圈讀取 TXT的數值資料(不用陣列)

    // 設定匯入的衛星角速度和角加速度資料     char parasfileomega[100];     int flag = 1;     printf("是否匯入預

delphi一行一行的讀取txt文字的資料

var   Form1: TForm1;   mylist:TStringlist;   i,a:integer; implementation {$R *.dfm} procedure TForm1.Button2Click(Sender: TObject); begin

Java 讀取excel指定行列資料以及將資料儲存到txt檔案中

在使用的軟體中經常要用到一些資料的匯入匯出,以及準確的定位資料,這些經常會涉及excle表格,因此把今天學習到的關於如何利用Java準確獲取到excle中的某一列資料,同時將此列資料輸出到txt檔案格式中。 使用的jar包:jxl.jar  相關的API:http://jx

C++如何讀取txt檔案的資料並且以二位陣列存到記憶體中

本次實驗主要的目的就是讀取txt的資料,在上次博文中說到如何讀取txt的資料,那篇博文讀了一行資料並存在了一個一維向量中,本次實現讀取二維向量。直接上程式碼: 解釋一下:程式碼中的40代表有40行,8064代表有8064列。 #include <iostream> #includ

Myeclipse中快速定位到指定

溫馨提示: 顯示所有快捷鍵的組合使用 ctrl+shift+L 快捷鍵是  Ctrl + L   快速的定位到指定行            &nb

通過spark-sql快速讀取hive中的資料

1 配置並啟動 1.1 建立並配置hive-site.xml 在執行Spark SQL CLI中需要使用到Hive Metastore,故需要在Spark中新增其uris。具體方法是將HIVE_CONF/hive-site.xml複製到SPARK_CONF目錄下,然後在該配置檔案中,新增hive.metast

python讀取excel指定資料並寫入到新的excel

#encoding=utf-8 import xlrd from xlwt import * #------------------讀資料-------------------------------

C++:依次讀取TXT檔案各行資料

// FileHandle.cpp : 定義控制檯應用程式的入口點。 // #include "stdafx.h" #include <iostream> #include <fstream> #include <string> int main() { s

R語言:快速讀取txt檔案

用R語言來讀取600多M的txt檔案,使用常用的read.table,太費時間。想起之前用readr包來讀取csv、spss的、sas、excel的很快,便嘗試了翻。 直接上程式碼: >

Ext:GirdPanel獲取表內指定資料方法

前臺程式碼 在要某控制元件提交事件的標籤內,新增如下程式碼: <DirectEvents>     <Click OnEvent="btn_Click">          <ExtraParams>            <ext

vb6.0 快速讀取txt

Function GetFile(FileName As String) As String Dim i As Integer, s As String, BB() As Byte If Dir(FileName) = "" Then Exit Function i = F

python讀取txt並將資料插入到sql中

原始資料在txt中 處理有很多不便 想要把它們插入到sql中去 程式碼如下: 連線資料庫: import MySQLdb conn=MySQLdb.connect(host="localhost",user="root",passwd="root",db="mydatab

MATLAB中批量從txt檔案中讀取指定資料儲存為txt檔案

經常遇到,我們想要讀取的資料,不是從頭開始讀取的,我們往往要求從固定的行開始讀取,MATLAB程式碼如下: function readData() %從指定行開始讀取資料 readFilePat

[C#]統計文本文件txt中的數(快速讀取)

cnblogs () stop static nbsp nes req stream filename 快速統計文本文件中的行數( StreamReader.ReadLine() ): 測試代碼如下: 1    //讀取txt文件中總行數的方法 2

Java實現讀取Excel指定列的指定資料

package utils; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import j

Python如何快速讀取資料檔案若干

用Python進行資料分析的童鞋們,經常遇到的問題就是遇到一個數據檔案,大概幾百兆,而只需要其中若干行資料。那麼我們怎麼辦?最笨的辦法,就是一次性將所有的檔案資料載入到記憶體中再做索引或切片處理,可能一次性載入就需要耗費一點時間。如果重複性地做這種事情,你都會覺得不好意思跟自己交代。 這裡,我給

C++學習--向txt檔案寫入資料讀取資料、獲取數以及刪除檔案

基於VS2013平臺的程式碼如下: #include <iostream> #include <fstream> using namespace std; void main() { ofstream fout; int a = 15;

C++讀取以空格作為資料區分標記,以回車為標記的txt檔案到一個整數陣列(字串妙用)

     這次讀取的就是上一篇中的original檔案的每一行到一個整數陣列中。      使用getline(預設吧回車符endl作為行標記)分別把每一行讀入到一個字串陣列,在這個字元數字最後加上/0構成一個字串;      使用strtok函式把每行組成的字串以空格為標記