unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
StaticArray = Array[0..1000] of Double;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
DArray: Array of StaticArray;
Length : Integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Length:=5;
Setlength(DArray, Length);
end;
end.
当我尝试使用 Setlength(( 来定义 2DArray 的长度时,它没有给我任何错误或什么都没有。
我希望结果是一个具有 1000 列和行长度的数组。但是,结果只有 1 行,有 1001 列。
知道为什么吗?
我需要以这种方式定义数组,但我无法设置它的长度。
*编辑列数,0..1000,加起来有1001列。
*编辑2修复了代码。
*编辑3做了一个更好的例子
我已经检查了您的代码,故意在Length
留下相同的 id .代码按预期工作:
procedure TForm1.Button20Click(Sender: TObject);
type
StaticArray = Array[0..1000] of Double;
var
DArray: Array of StaticArray;
Length : Integer;
begin
Length := 5;
SetLength(DArray, Length);
Caption := IntToStr(High(DArray)); //ouputs 4
//note bad usage of Length var, so we can not use Length intrinsic function
DArray[3, 1000] := 42;
end;