delphi 读取txt中的数据到变量当中,要有代码

已知一个txt数据文件'c:\result.txt',有三列:2.567990.0927.53321.49520.581.577941.967741.020.929161... 已知一个txt数据文件'c:\result.txt',有三列:
2.56799 0.09 27.5332
1.4952 0.58 1.57794
1.96774 1.02 0.929161
1.78971 1.5 0.193139
1.79072 1.98 0.0955971
2.18878 2.58 0.151637
3.29442 3.14 0.0491773
3.32489 3.8 0.125029
4.48122 5.13 0.126467
4.7732 5.99 0.203139
6.06282 7.1 0.146081
7.00375 8.12 0.137469
8.27146 9.19 0.0999503
8.67439 10.36 0.162704
现在要把三列数据分别读到三个变量里,新手希望能写出代码并且有详细注释,
就是把三列数据分别读到三个变量里,用readln等简单指令不能实现吗?新手疑惑。。。
展开
 我来答
darlingks
2011-10-15 · TA获得超过222个赞
知道小有建树答主
回答量:638
采纳率:75%
帮助的人:176万
展开全部
{这样可以取出第一行中三列的数据分别保存在str1,str2,str3变量中
如果要保存所有数据 那就用3个数组 比如str1[],str2[],str3[] }
procedure TForm1.Button1Click(Sender: TObject);
var
str1,str2,str3:string;
list,listR:Tstringlist;
begin
list:=Tstringlist.Create;
listR:=Tstringlist.create;
listr.Delimiter:=#9;
listr.DelimitedText:=list[0];
str1:=listr[0];
str2:=listr[1];
str3:=listr[2];
list.free;
listr.free;
end;
end;

你说的颜色不知道是什么意思
追问
能加上标注吗?好多看不懂,而且能联系一下我给的例子吗?
追答
{这样可以取出第一行中三列的数据分别保存在str1,str2,str3变量中
如果要保存所有数据 那就用3个数组 比如str1[],str2[],str3[] }
procedure TForm1.Button1Click(Sender: TObject);
var
str1,str2,str3:string;
list,listR:Tstringlist;
i:integer;
begin
list:=Tstringlist.Create; //创建
listR:=Tstringlist.create;
listr.Delimiter:=#9; //指定分隔符为空格
list.LoadFromFile('c:\result.txt'); //加载文本到list
for i:=0 to list.Count-1 do begin //result文本有多少行就循环多少次
listr.DelimitedText:=list[i]; //表示当前操作的是 文本的第i行
str1:=listr[0]; //以下3行为取出第i行中读取的3个数据 依次赋值
str2:=listr[1];
str3:=listr[2];
//以下为弹窗显示 不用管他
if application.MessageBox(pansichar('三个变量中保存的数据依次为:'+str1+#9+str2+#9+str3),'提示|点''否''退出',MB_YesNo)=idno then
exit;
end;
list.free; //释放
listr.free;
end;

你说的颜色不知道是什么意思

你下面提问说的用f变量来绑定文本 这种方法不是不可以 是太麻烦 用TStringlist方法
来操作文本文档是非常方便的 我一般都用这个来做
这个是一个习惯问题了 你觉得怎么样方便就怎么样来 同样的 如果用来做配置文件的
话 一般用ini文件 就是为了方便而已 用txt当然也可以做配置文件 最好养成一种习惯
或者一种意识 因为以后可能碰到的问题多了 你不可能每次都去试试这个试试那个最后
再决定用什么办法来解决 对吧
遒劲且威武的小白桦s
2011-10-17 · TA获得超过115个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:192万
展开全部
给你个最简单易懂的吧
var
tmplist1, tmplist2: tstringlist;
group1, group2, group3: tstringlist;
begin
tmplist1 := tstringlist.Create; //创建一个list载入文本
tmplist1.LoadFromFile('c:\result.txt');
group1 := tstringlist.Create; //因为不知道你要怎么调用,这里我分别创建三个list来存
group2 := tstringlist.Create;
group3 := tstringlist.Create;
for i:= 0 to tmplist1.count - 1 do
begin
tmplist2 := stringlist.Create; //创建一个临时list
tmplist2.Delimiter := ' '; //设置分隔符为 “空格”
tmplist2.DelimitedText := tmplist1.Strings[i]; //设置需要分割的文本
group1.Add(tmplist2.Strings[0]); //分割后三组数据分别添加到之前三个list
group2.Add(tmplist2.Strings[1]);
group3.Add(tmplist2.Strings[2]);
tmplist2.Free;
end;
tmplist1.free;
end.

//刚回答完才看到跟darlingks童鞋是一样的方法,权当补充标注吧
追问
为什么不能将这个txt文件设置成有类型文件,即var f:file of real; 设三个变量v1,v2,v3: real,然后用assign把 f和'c:\result.txt'关联起来,reset打开f ,最后用readln来读到三个变量里呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liuaqing111
2011-10-15 · TA获得超过3582个赞
知道小有建树答主
回答量:3855
采纳率:100%
帮助的人:1414万
展开全部
我的一段程序,你参考一下
if OpenDialog1.Execute then
begin
edit16.Text :=trim(opendialog1.filename);
end;

ReadTxt(edit16.Text );
Procedure TForm_P_operation.ReadTxt(FileName:String);
Var F : Textfile; str ,tt,mm: String; label ss;
Begin

AssignFile(F, FileName); {将文件名与变量 F 关联}

Reset(F); {打开并读取文件 F }
tt:='';
ss:
Readln(F, str);
tt:=tt+trim(str);
T_cofirmation.Active :=true;
T_cofirmation.Insert ;
T_cofirmation.FieldByName('工序号').AsString :=trim(copy(str,0,10));
mm:=trim(copy(str,11,10));

T_cofirmation.FieldByName('操作者1').AsString :='H'+copy(str,11,3);
T_cofirmation.FieldByName('操作者2').AsString :='H'+copy(str,14,3);
T_cofirmation.FieldByName('操作者3').AsString :='H'+copy(str,17,3);

T_cofirmation.FieldByName('条码号').AsString :=trim(copy(str,21,16));

// if length(trim(copy(str,38,2)))>1 then T_cofirmation.FieldByName('工序号').AsString :=trim(copy(str,38,2));
T_cofirmation.FieldByName('工序号').AsString :=trim(copy(str,38,2));
T_cofirmation.Post;
if length(str)>0 then goto ss;

ShowMessage('文件有:' + tt + '行。');

closefile(F); {关闭文件 F}

End;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
linzhiyu86
2011-10-16
知道答主
回答量:11
采纳率:0%
帮助的人:4.5万
展开全部
tert ret
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式