我需要从一个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想这种情况,怎么处理
解决方案 »
- 在线等:webbrowser加载页面时,同时指定字体及大小,请教应该在那个事件中加载?
- 请问,窗体的属性borderstyle为bsnone的时候。怎么能让窗体上下,左右拉伸呢。
- 在EHlib控件系列的DBGridEH的小问题?
- 请问如何设置excel每个例的各自宽度,还有如果超出宽度如何实现自动换行?谢谢
- 菜鸟问:DBGRID的用法,马上结帖。
- 如何编写通过代理服务器发送邮件?
- 你就可怜,可怜我吧....看看再说!......DBGRID问题.
- 请问在FastReport中如何直接打印DBGrid
- Paradox数据库的紧缩问题
- 关于delphi若干个问题的补充
- 关于【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;
测试成功,非常感谢