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;


简单粗暴 快速。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Delphi 中,可以使用 ADO 驱动程序来连接和读取 Excel 数据。以下是读取 Excel 数据的详细操作步骤: 1. 首先,需要添加 ADO 组件。在 Delphi 中,选择“组件”菜单,然后选择“导入组件”。在“导入组件”对话框中,选择“ADO”并点击“确定”按钮。 2. 在 Delphi 中,选择“文件”菜单,然后选择“新建” > “其他” > “数据控件” > “ADO 连接”来创建一个 ADO 连接组件。 3. 双击 ADO 连接组件,打开“连接字符串”属性。在连接字符串中,选择 Excel 驱动程序并指定 Excel 文件所在的路径和文件名。例如,“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\MyExcelFile.xlsx;Extended Properties='Excel 12.0 Xml;HDR=YES;'”。 4. 创建一个 ADO 查询组件,它将使用 ADO 连接组件来连接 Excel 数据。 5. 在 ADO 查询组件中,设置“SQL”属性为“SELECT * FROM [Sheet1$]”,其中“Sheet1”是 Excel 文件中的工作表名称。 6. 使用 ADO 查询组件的“Open”方法来打开查询结果集。 7. 使用 ADO 查询组件的“FieldByName”方法来访问每个字段的值。例如,对于包含“Name”和“Age”字段的 Excel 表格,可以使用以下代码来读取每一: ``` while not Query1.EOF do begin Name := Query1.FieldByName('Name').AsString; Age := Query1.FieldByName('Age').AsInteger; // 处理数据... Query1.Next; end; ``` 以上就是在 Delphi读取 Excel 数据的详细操作步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值