Delphi 怎么读取txt文档

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi 怎么读取txt文档相关的知识,希望对你有一定的参考价值。

我想用Delphi查找一个txt文档中的内容,并且将符合要求的内容自动输出到另外一个txt文档中去。
这个txt文档的每一行都由[XX.XX.XX]开头,表示具体时间比如[16:56:07]就是下午4点56分07秒。
因此我想能只检查电脑时间之前的30秒钟的几行字,比如现在是5:00整,那就只检查[4:59:30]下面的行数。
至于要检查的内容嘛,就用这四行代替吧。
[05.11.00]1234567----->567
[05.13.30]1234567----->123
[05.13.35]2345678----->876
[05.13.40]1234789----->987
即假设该txt文本内容为这几行,并且假设目前电脑时间为5点14分
要求,当检测到这行中有1234567时,将'---->'后面的内容复制然后粘贴。
但是只要求检测[05.13.30]及以后的内容。
比如检测到第2行符合要求,则程序自动将123输入另一个txt文档第一行。
(在此之前光标已经点到了另外一个txt文档)。

用TextFile就可以了

var
  f: TextFile;
  s: string;
  ts: string;
  rf: TextFile;
begin
  AssignFile(f, "your file path and name.txt");
  AssignFile(rf, "your output file name.txt");
  Reset(f);
  Append(rf);
  
  try
    while not eof(f) do
      readln(f, s);
      ts := Copy(s, 2, 8);
      if FormatDateTime("hh.mm.ss", Now - 30 / 86400) > s and Pos(s, "1234567") > 0 then
      begin
        ts := Copy(s, Pos(s, "---->") + 5, Length(s));
        Writeln(rf, ts);
      end;
    end;
  finally  
    Close(f);
    Close(rf);
  end;
end;

代码没有测试,直接手打,你自己调试一下看。

追问

第7、8行的
AssignFile(f, "your file path and name.txt");
AssignFile(rf, "your output file name.txt");
要输入文件所在位置么,为什么用双引号引起来,
还有16行的

pos后面>0之前的位置老报错
f,rf都什么意思,谢谢

追答

双引号错了,好久不用Delphi,忘记了,Delphi字符串应该是单引号,你改用单引号即可,下面的字符串也是一样。

f, rf都是文本文件变量。

追问

16行的pos后面>0之前的位置老报错,怎么改都没用...

追答

改成如下:
if (FormatDateTime('hh.mm.ss', Now - 30 / 86400) > s) and (Pos(s, '1234567') > 0) then

追问

21行的end;报错.....

追答

13行后面加个begin

追问

AssignFile(f, 'D:\360data\重要数据\我的文档\GTA San Andreas User Files\SAMP\chatlog.txt');
AssignFile(rf, 'D:\Program Files\新建 文本文档.txt');
7、8行的这么改可以么,为什么似乎没用,而且我把时间的限制去掉了

追答

谢谢,没环境调试,不好意思,好久没弄Delphi了,一些基本的东西都忘记了。

参考技术A 使用Stringlist,LoadfromFile 具体怎么做,网上自己搜搜追问

具体点可以吗...谢谢

在matlab中怎么读取txt格式的数据文件

我有一个文本格式的数据文件具体如下:
*code1 换行 1,2,3 换行4,5,6 换行*code2换行7,8,9 也就是一个标题下面就是一个矩阵数据,但注意数据之间有逗号,我想通过matlab将每个标题下数据读取到一个数组中,怎么办?我在网上查的方法不管用,哪位编程高手帮忙解决下,小弟不胜感激!

根据txt文档不同种类介绍不同的读取数据方法 :

一、纯数据文件(没有字母和中文,纯数字) 对于这种txt文档,从matalb中读取就简单多了 。
例如test.txt文件,内容为“17.901 -1.1111 33.045
17.891 -1.1286 33.045 17.884 -1.1345 33.045” 可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。
二、中英文和数据如test1.txt

“你好 欢迎来到 振动论坛
vib.hit.edu.cn 1 11 111 1111 2 22 222 2222 3 33 333 3333 4 44 444 4444 5 55 555 5555”
这样的文件怎么读入数据呢?
方法有多种,现举两个比较简单实用的。

方法一:
file/import data....../next/finish >> whos
Name Size Bytes Class data 5x4 160 double array textdata 4x1 300 cell array Grand total is 54 elements using 460 bytes >> data data =
1 11 111 1111 2 22 222 2222 3 33 333 3333 4 44 444 4444 5 55 555 5555 >> textdata textdata =
'你好'
'欢迎来到' '振动论坛'
'vib.hit.edu.cn'
方法二:
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。
这里%s的个数和[a1,a2,a3,a4]对应。
>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4) a1 = '1' '2' '3' '4' '5' a2 = '11' '22' '33' '44' '55' a3 = '111' '222' '333' '444' '555' a4 =
'1111' '2222' '3333' '4444' '5555'
因以字符串的形式读入,所以有''。
参考技术A 首先Matlab是可以解决这个问题,这里有哥们写了一些code,我觉得太麻烦了。
给你推荐一个简单办法,进入txt 按CTRL+H 用空格去替代‘,’。问题很简单就解决了。
假设你是三列数据,数据从123.txt第n行开始。读取数据的Matlab格式如下 :
[a1 a2 a3]=textread('123.txt','%f %f %f','headerlines',n-1);本回答被提问者采纳
参考技术B 可以直接用importdata这个函数啊。
>>importdata('a.txt')
参考技术C 把数据文件发到matlabguy@163.com,我看一下。

以上是关于Delphi 怎么读取txt文档的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 图书管理系统,怎么用流读取TXT文档在控制台显示

delphi读取txt时候的中文乱码,该怎么处理

高分悬赏 C#WPF中怎么读取TXT文档并显示在RichtextBox里。

怎么用matlab读取一个txt文档(全是数据),我想把它读成一个7列,n行(数太多,不知多少行),

C语言从TXT文档中读取一组数字时如何判断已经读到最后一个数字?

用STM32在SD卡里面建立TXT文档存数据,并读取数据