急!二维数组的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 abin30
  • 开始时间 开始时间
A

abin30

Unregistered / Unconfirmed
GUEST, unregistred user!
用到二维数组,
声明没有问题: rr: array[0..6000,0,6000] of real;
但是当作参数的时候:test(r_1:array of array of real) 这样始终报错。
没有办法我找了资料这样做的:
定义一个类型:
type
RealArrayTwo = array[0..6000,0..6000] of real;
做参数
test(r_1:RealArrayTwo)

这样没有问题,但是在函数里边使用 的时候就出现了问题,只要出现 r_1[i,j] 就要报错,提示 Format '%1' invalid or incompatible with argument
。不知道是怎么回事。
有人说是数组太大,后来我重新写了一个:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
ArrayT=array[1..100,1..100] of real;
TForm1 = class(TForm)
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i,j:integer;
S:Arrayt;
begin
for i:=1 to 90 do
begin
for j:=1 to 90 do
s[i,j]:=i*j;
end;
end;
还是报错,不知道怎么解决。
另外就是我在程序里边可能要用到大数组 ,array[0..6000,0..6000]这样的会不会有其他影响呢。

end.
 
第一个错你没说是什么。
第二和错很明显就是 Format 的问题,跟数组无关
 
报错都是这样:Format '%1' invalid or incompatible with argument
我也不知道什么地方出问题了。
至于 Format ? 不明白。能否说明白点,谢谢!
 
白河愁说的没错.你应该是在什么地方Format格式化字符串参数给的不对.
array[0..6000,0..6000]这样的类型像你这样用的话没问题,但局部变量你最好不要声明称这个类型.
实在要用可以声明这个类型的指针都太分配内存.因为局部变量在栈里面.我怕你的栈不够大啊
 
我是改fortran程序的,其结构不是很想动 ,只想把相应的地方换过来就称了。
如果是这样的话,应该就是堆栈的问题了。 我对这个不熟悉,有没有好的解决办法呢。
里边要用 array[0..6000,0..6000] 这样的数组很多个。
 
就是啊,我把你的unit放做d7编译就没报错,:)
 
delphi有一条编译指令可以更改默认的栈的大小,我给忘了,给你找找!
用setlength动态申请空间实在堆分配的,对没有问题了·····!··
 
还需要~~~~ 帮忙啊~~
 
后退
顶部