当前位置:主页>仓库管理软件> 列表

读取TXT文件中的信息

企业管理软件版1楼: 一个TXT文件中
有如下类容。:
12.3 55.4 663.4 88.9 44 558.2
11.6 88.5 44.8
如何把他们赋值给一个数组 或则变量:
就是一个个数据分开取出来 (上面一空格分开;)
即实现如下要求:
1 :把9个数据给一个数组的9个值;
2:能任意取值(上面九个)给一个变量吗 :;

2楼: 更正下
11 22 33
12.3 55.4 663.4 88.9 44 558.2
11.6 88.5 44.8
加了一行 因为第一行是额外信息不能提取 ;
就是说要从第二行开始取值 ;
也可以说是只要空了一格的我都要把他的值取出来 !商品销售管理软件

3楼: 会读文本文件吧,先从文本文件中报数据一行一行的取出来,
然后分析字符串,将数据分析出来,

4楼: 新建工程,窗体上放置一个memo和一个edit控件
完整代码:
procedure TForm1.Button3Click(Sender: TObject);
var
Data:Array of real ;
DataLine: string ;
i,blankPos: integer ;
ValidDataIndex:integer;
begin
ValidDataIndex:= 0 ;
Edit1.Text:= '''' ;
Memo1.Clear ;
Memo1.Lines.Add(''11 22 33''+#13#10+
''12.3 55.4 663.4 88.9 44 558.2''+#13#10+
''11.6 88.5 44.8'') ;
setlength(Data,9) ;
for i:=1 to Memo1.Lines.Count -1 do //如果第一行业有效请设为i:=0
begin
DataLine:= Trim(Memo1.Lines.Strings[i]) ;
if DataLine='''' then continue ;

try
blankPos:= pos('' '',DataLine) ;
while blankPos>0 do
begin
data[ValidDataIndex]:= strtofloat(copy(DataLine,1,blankPos-1));
delete(DataLine,1,blankPos) ;
blankPos:= pos('' '',DataLine) ;
if blankPos=0 then
begin
inc(ValidDataIndex) ;
data[ValidDataIndex]:= strtofloat(DataLine);
end ;
Inc(ValidDataIndex) ;
end ;
except
end;
end ;
for i:= 0 to high(data) do
Edit1.Text:= Edit1.Text+format(''%8.1f'',[data[i]]) ;
end;

5楼: 新建工程,窗体上放置一个memo和一个edit控件
完整代码:
procedure TForm1.Button3Click(Sender: TObject);
var
Data:Array of string;
ls: string ;
i,blankPos,ah: integer ;
tf: Textfile
begin
ValidDataIndex:= 0 ;
Assignfile(tf, ''您的文件'')
reset(tf);
ln:=0;
while not eof(tf) do begin
readln(tf,ls);
ln:=ln+1;
if ln=1 then continue;
setlength(Data,1);
ah:=1;
for i=1 to length(ls) do begin
if ls[i]='''' then begin
if trim(data[ah-1])<>'''' then begin
ah:=ah+1;
setlength(data,ah+1)
end;
end else begin
data[ah-1]:=data[ah-1]+ls[i];
end;

end;
for i=0 to ah-1 do //这里你可以对所有的数进行想要的操作
end;
closefile(tf);
end;

6楼: 不用那么麻烦,Read 可以直接读取以空格分隔的浮点数,Pascal 时代就有的功能了:
type
TFloatData = array of Double;

//FileName:文件名;Data:存储数据的动态数组
procedure GetTxtData(const FileName: string; var Data: TFloatData);


var
f: TextFile;
i: Integer;
begin
AssignFile(f, FileName);
FileMode := 0; //只读模式
Reset(f);
Readln(f);
i := 0;
while not Eof(f) do
begin
Inc(i);
SetLength(Data, i);
Read(f, Data[i - 1]);
end;
CloseFile(f);
end;
第 3 个数据就是 Data[2],第 9 个就是 Data[8],
注意:文本文件最后一个数据后面不要留尾巴(如空格、回车什么的)。

企业管理软件版7楼: 呵呵 vvyang的方法比较好,且简洁,不过问下 vvyang是不是因为分割符号是空格所以可以直接用read命令啊 ??
要是换了其他的可以吗??
如果能让分割符号是任意的也行就好了
也谢谢两面的两位 vvyang有什么补充的吗,3天后揭贴 !!

8楼: 回车也行,其它字符不可以,你试试吧。

9楼: 关注、收藏。

10楼: 多人接受答案了。