读取文本文件里内容的问题

hontim 2005-08-04 01:45:49
比如文本文件内容为:

Sample Name:D-8342
Data1 C A
1 0.342 234
2 0.322 423

要把"D-8342"和"0.322"读出来,需要怎么编程?
...全文
281 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangking 2005-09-13
  • 打赏
  • 举报
回复
站名:电脑学习网 http://www.why100000.com
logo: http://why100000.com/images/why100000_88x31.gif
简介:“十万个为什么”电脑学习网,电脑知识,应用技巧,实用经验,学习资源
联系Email: zhangking@hotmail.com QQ:9365822
hontim 2005-08-17
  • 打赏
  • 举报
回复
能否写个代码?
看那山瞧那水 2005-08-15
  • 打赏
  • 举报
回复
同意 zhangking(网眼-SOGO99.COM)
文本文件一定要有固定格式,不然就要用全文查找了。
一是自己定义格式,二是用文本数据库格式(《d5开发指南》这本书里有)
hellolongbin 2005-08-15
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, StrUtils;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
s:string;
s1:TStringList;
begin
s1:=TStringList.Create;
s1.LoadFromFile('C:\1.txt');
for i:=0 to s1.Count-1 do
begin
if pos('Sample Name:',s1[i])>0 then
begin
s:=trim(copy(s1[i],pos('Sample Name:',s1[i])+12,length(s1[i])));
if pos(' ',s)>0 then s:=LeftStr(s,pos(' ',s)-1);
Edit1.Text:=s;
end;
if AnsiStartsStr('2 ',s1[i]) then
begin
s:=trim(copy(s1[i],3,length(s1[i])));
s:=LeftStr(s,pos(' ',s)-1);
Edit2.Text:=s;
break;
end;
end;
s1.Free;
end;

end.
littlebobo 2005-08-15
  • 打赏
  • 举报
回复
没关系,先从文本文件中读出,然后对每行文本进行判断即可
hontim 2005-08-15
  • 打赏
  • 举报
回复
我要的就是全文查找
zhangking 2005-08-14
  • 打赏
  • 举报
回复
你的文本文件必须是有固定格式的!
你又不是玩人工智能!!!
hontim 2005-08-14
  • 打赏
  • 举报
回复
那如果内容变成这样:
S/N:23424232234
Sample Name:D-8342 InjectDate:2005-08-14
something error!
Data1 C A
1 0.342 234
2 0.322 423
然后我还想读原来的值呢,
或者说我想读的值是
1."Sample Name:"后的字符串"D-8342",不管它在哪一行;
2.读出"Data1"后第2行第2列的数"0.322",不管"Data1"在哪里?
ztenv 2005-08-04
  • 打赏
  • 举报
回复
Sample Name:D-8342
Data1 C A
1 0.342 234
2 0.322 423
\\说一下具体的规则吧,如果只读D-8342和0.322那很简单,
就这个文件论这个文件,
把第一行读入一个String类型的变量line1中,然后line1:=copy(line1,pos('D',line1'),length(line1)-1)就能得到D-8342;下面要得到0.322不用我多说了吧?
winxkm 2005-08-04
  • 打赏
  • 举报
回复
procedure TForm1.BitBtn1Click(Sender: TObject);
var
F:textFile;
I:integer;
S:string;
begin

AssignFile(F,'C:\dd.txt');
Reset(F);
I:=1;
while not eof(F) do
begin
readln(F,s);
self.StringGrid1.Rows[I].Delimiter:=chr(9); //chr(9)是个TAB键值
self.StringGrid1.Rows[I].DelimitedText:=s;
inc(I);
end;
closeFile(F);
end;
sxf_zero 2005-08-04
  • 打赏
  • 举报
回复
有难度,帮你顶一下

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧