很簡單的一個問題,為什么在delphi中試了很多方法就是實作不了呢?
function a();
var
b: array [1..4] of integer;
begin
b:=(2,4,3,7); // b是一個區域變數的陣列,并且要賦值的資料是沒有規律的,怎么給b賦值呢?
end;
上述b的賦值肯定會報錯,怎么寫正確的陳述句呢?
uj5u.com熱心網友回復:
b[4]:=250;uj5u.com熱心網友回復:
三種方法:var
a: array[1..4] of integer = (1, 2, 3, 4);
b: array of integer;
c: TArray<integer>;
i: integer;
begin
for i := 1 to 4 do writeln(a[i]);
b := VarArrayOf([2, 3, 4, 5]);
c := TArray<integer>.Create(3, 4, 5, 6);
for i := 0 to 3 do writeln(b[i]);
for i := 0 to 3 do writeln(c[i]);
end;
方法a任意Delphi版本都可以,b需要支持動態陣列(d4+),c需要支持泛型(d2009+),后兩種方法陣列下標只能從0開始。。
uj5u.com熱心網友回復:
var Const b: array [0..3] of integer=(1, 2, 3, 4);這是陣列引數形式,初始化資料,不能重新賦值。
var b: array [1..4] of integer;
這是定義陣列變數,可以通過指定地址下標,讀寫數值。
b[0]:=100;
for i:=0 to 3 do
b[i]:=100+i;
uj5u.com熱心網友回復:
你的賦值方法只能在定義時賦值,如果是沒什么規律的值,只能一個個來了。。。function a();
var
b: array [1..4] of integer;
begin
b[1]:= 2;
b[2]:= 4;
b[3]:= 3;
b[4]:= 7;
end;
uj5u.com熱心網友回復:
請問一下,采用第二種方法,要是b是二維陣列該怎么寫呢?
var
b:array of array of integer;
i,j :integer;
begin
b := VarArrayOf([2, 3, 4, 5],[3,7,4,0]);
for i := 0 to 3 do writeln(b[i]);
for j := 0 to 1 do writeln(b[j]);
end;
這樣寫是否正確呢?多謝了~~~
uj5u.com熱心網友回復:
b := VarArrayOf([[2, 3, 4, 5],[3,7,4,0]]);如果是高版本,xe7+,可以直接:b := [[2, 3, 4, 5],[3,7,4,0]];
uj5u.com熱心網友回復:
抱歉,這樣是不行的,Delphi里面坑太多,要:
SetLength(y, 2, 4);
y[0] := VarArrayOf([2, 3, 4, 5]);
Y[1] := VarArrayOf([3,7,4,0]);
XE7+,b := [[2, 3, 4, 5],[3,7,4,0]];是可以的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/50830.html
標籤:語言基礎/算法/系統設計
