我需要从一个txt文件中读取数据,real型的,共有 50万(有可能变化)行 * 6列var
num: array of array of real; //用来存贮数据 n,m:longinteger;
s:string;
f:textfile;beginn:=0; //用来判断c:\text.txt 有多少行,实际是 1234567行*6 列
assignfile(f,'c:\test.txt');
reset(f);while not eof(f) do
begin
readln(f,s);
n:=n+1;
end
closefile(f);
SetLength(num,n,m);assignfile(f,'c:\test.txt');
reset(f);while not eof(f) do
begin
read(f,a[i,1],a[i,2],a[i,3],a[i,4],a[i,5],a[i,6]);
n:=n+1;
end
closefile(f);可是提示出错:out of memory想这种情况,怎么处理
num: array of array of real; //用来存贮数据 n,m:longinteger;
s:string;
f:textfile;beginn:=0; //用来判断c:\text.txt 有多少行,实际是 1234567行*6 列
assignfile(f,'c:\test.txt');
reset(f);while not eof(f) do
begin
readln(f,s);
n:=n+1;
end
closefile(f);
SetLength(num,n,m);assignfile(f,'c:\test.txt');
reset(f);while not eof(f) do
begin
read(f,a[i,1],a[i,2],a[i,3],a[i,4],a[i,5],a[i,6]);
n:=n+1;
end
closefile(f);可是提示出错:out of memory想这种情况,怎么处理
解决方案 »
- 如何使DBGRID中的某一列的内容以一定的格式输出?
- 调用FORM时,如何返回一个值?(菜鸟问题)
- 请问如何插入这种数据类型
- 如何在dxDBGrid或是wwDBGrid中将某个字段相同的值合并显示为一个单元格?
- 打包时为什么数据库没打包进来
- 调用DLL 的问题( 非常的急 )
- 求一sql语句!!
- 那个函数能调用chm帮组文件亚?
- 有人用过DCDBTreeView这个控件吗???一个朋友给了我一份原码需要这个控件,但我始终没有搜到!!!高分收购!!!!!!!
- 谁知道delphi 5 ADOExpress Update pack 2 的序列号,十万火急
- 关于【12张数据表用几个ADOQuery】?
- ApiHook 的问题
read(f,a[i,1],a[i,2],a[i,3],a[i,4],a[i,5],a[i,6]);诸多的错误,给你改了一下var
num: array of array of real; //用来存贮数据 n,m:longint; s:string;
f:textfile;beginn:=0; //用来判断c:\text.txt 有多少行,实际是 1234567行*6 列
assignfile(f,'c:\test.txt');
reset(f);while not eof(f) do
begin
readln(f,s);
n:=n+1;
end;
closefile(f);
//因为是6列,应该再加个对m赋值的语句
m:=6;
SetLength(num,n,m);assignfile(f,'c:\test.txt');
reset(f);
n:=0;
while not eof(f) do
begin
read(f,num[n,0],num[n,1],num[n,2],num[n,3],num[n,4],num[n,5]);
n:=n+1;
end;
closefile(f);
end;
我用 matlab 产生的clear
clcx=30
y=sin(x)for theta=1:1000000
fig=fopen('e:\test.txt','a+');
fprintf(fig,'%6.4f %6.4f %6.4f %6.4f %6.4f %6.4f\n',y,y,y,y,y,y);
fclose(fig);
end
procedure TForm1.Button1Click(Sender: TObject);
var
num: array of array of real; //用来存贮数据
n,nn,m:longint;
s:string;
f:textfile;
begin
nn:=0; //用来判断c:\text.txt 有多少行,实际是 1234567行*6 列
assignfile(f,'c:\test.txt');
reset(f);
while not eof(f) do
begin
readln(f,s);
nn:=nn+1;
end;
closefile(f);
//因为是6列,应该再加个对m赋值的语句
m:=6;
SetLength(num,nn,m);
assignfile(f,'c:\test.txt');
reset(f);
n:=0;
repeat
read(f,num[n,0],num[n,1],num[n,2],num[n,3],num[n,4],num[n,5]);
n:=n+1;
until eof(f)or(n<=nn-1);
closefile(f);
end;
多谢,ok可以为什么用 while 不行呢?
procedure TForm1.Button1Click(Sender: TObject);
var
num: array of array of real; //用来存贮数据
n,nn,m:longint;
s:string;
f:textfile;
ss:TStringlist;
j:integer;
begin
nn:=0; //用来判断c:\text.txt 有多少行,实际是 1234567行*6 列
assignfile(f,'c:\test.txt');
reset(f);
while not eof(f) do
begin
readln(f,s);
nn:=nn+1;
end;
closefile(f);
//showmessage(inttostr(nn));
//因为是6列,应该再加个对m赋值的语句
m:=6;
SetLength(num,nn,m);
assignfile(f,'c:\test.txt');
reset(f);
n:=0;
while not eof(f) do
begin
readln(f,s);
ss:=TStringlist.Create;
ss.Delimiter:=' ';
ss.DelimitedText:=s;
for j:=0 to ss.Count-1 do
num[n,j]:=strtofloat(ss[j]);
ss.Free;
n:=n+1;
end;
closefile(f);
showmessage(floattostr(num[1,0]));
end;
begin
s:=floattostr(num[n,0])+' '+floattostr(num[n,1])+' '+floattostr(num[n,2])+' '
+floattostr(num[n,3])+' '+floattostr(num[n,4])+' '+floattostr(num[n,5]);
memo1.Lines.Add(s);
end;
测试成功,非常感谢