線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1691
推到 Plurk!
推到 Facebook!

Array Of Array 問題

尚未結案
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-07 15:39:24 IP:203.185.xxx.xxx 未訂閱
Procedure ABC(StrControlArray: Array Of Array Of String); 當compile時說有問題 "Identifier expected But 'ARRAY' found, why? 想pass一個two dimension array 註: 這個procedure是放在別的unit
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-07 15:58:57 IP:147.8.xxx.xxx 未訂閱
If you really want to use array of array, you need to create a new type, e.g.    
type
    TMyArray = array of string;    procedure ABC(StrControlArray: array of TMyArray);
BTW, you can use SetLength in creating multiple dimension dynamic array.
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-07 16:26:14 IP:203.185.xxx.xxx 未訂閱
如果我之前define了一個constant array : c_ABC[1..2, 1..10] 但當我依照上面的方法時,就會說incompatible type, why?
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-07 16:56:34 IP:147.8.xxx.xxx 未訂閱
引言: 如果我之前define了一個constant array : c_ABC[1..2, 1..10] 但當我依照上面的方法時,就會說incompatible type, why?
This is not a dynamic array....
type
    TMyArray = array[1..2, 1..10] of string;    var
    c_ABC: TMyArray    procedure ABC(StrControlArray: TMyArray);
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-09-07 17:04:22 IP:203.185.xxx.xxx 未訂閱
不過一個問題是,Array[1..2, 1..10]個size是會變的...那怎麼辦? 因為我create不同constant array,但size會有不同,但想pass同一個function,真的沒辦法..??
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-09-08 09:54:27 IP:147.8.xxx.xxx 未訂閱
Constant array? Array in const section? I think using open array parameters would be easier.. of course 1 dimension only.
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-09-11 03:14:47 IP:203.204.xxx.xxx 未訂閱
BorlandUser 你好
  如果是使用多維動態陣列的話,必須先行宣告一個多維動態陣列的型態,然後Procedure 或Function以該型態來定義參數的型態,如下範例:    Type
  String2D = Array Of Array Of String;    Procedure ABC(StrControlArray: String2D);
Begin
  // 要注意陣列元素內容是否為空的,
  If Length(StrControlArray) > 0 Then Begin
    ShowMessage('[' IntToStr(Length(StrControlArray)) ',' IntToStr(Length(StrControlArray[0])) ']');
  End;
End;    procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  AA :String2D ;
  i,j:Integer ;
begin
  SetLength(AA,2);
  SetLength(AA[0],3);
  SetLength(AA[1],3);
  For i:= 0 To Length(AA)-1 Do Begin
    For j:=0 To Length(AA[i])-1 Do Begin
      AA[i,j] := IntToStr(i) '_' IntToStr(j);
    End;
  End;
  // 呼叫ABC Procedure 傳入AA參數
  ABC(AA);
end;    PS:使用動態陣列時要注意,各維元素個數可以不同喔!如下:
  SetLength(AA,3);
  SetLength(AA[0],4);
  SetLength(AA[1],2);
  SetLength(AA[2],3);
  For i:= 0 To Length(AA)-1 Do Begin
    For j:=0 To Length(AA[i])-1 Do Begin
      AA[i,j] := IntToStr(i) '_' IntToStr(j);
    End;
  End;
結果會造成下列的二維陣列(不等長)    AA[0]: [0_0] [0_1] [0_2] [0_3]
AA[1]: [1_0] [1_1]
AA[2]: [2_0] [2_1] [2_2]
 
_______________________________________ 深藍的魚,祝您好運..........連連
系統時間:2024-06-29 19:00:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!