如何將二維陣列傳到另一個Form上 |
答題得分者是:supman
|
vickyju
一般會員 發表:2 回覆:4 積分:1 註冊:2005-03-11 發送簡訊給我 |
Form1 的程式碼
type Tab = array[1..5,1..10] of integer; procedure TForm1.Button2Click(Sender: TObject);
var ArrayB:Tab;
i, j, x:integer;
begin
for i := 1 to 5 do
begin
for j := 1 to 10 do
begin
ArrayB[i,j] := i * j
end;
end;
x := Unit2.DF_Child(ArrayB);
end; Form2的程式碼
type Tab = array[1..5,1..10] of integer; function DF_Child(ArrayB:Tab):integer;
var i, j:integer;
V:string;
begin
for i := low(ArrayB) to High(ArrayB) do
begin
V:= '';
for j := Low(ArrayB[i, 1]) to High(ArrayB[i,1]) do
begin
V := IntToStr(ArrayB[i,j]) ',';
end;
Form2.ListBox1.Items.Add(V);
end;
result := 2;
end;
以上程式 會有 Incompatible types: 'Unit2.Tab' and 'Unit1.Tab' 的錯誤訊息
該如何解決呢?? 或是有其他方法可以將Form1的陣列內容傳到Form2呢??
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
因為您在兩個Unit中都定義了Tab這個型態,對編譯器來講是兩個不同Type,您要將函數與定義放在同一Unit,再讓Unit1去Use他,這樣就可以了
Unit1: uses Unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var ArrayB:Tab; i, j, x:integer; begin for i := 1 to 5 do begin for j := 1 to 10 do ArrayB[i,j] := i * j end; x:=DF_Child(ArrayB); end; Unit2: unit Unit2; interface type Tab = array[1..5,1..10] of integer; function DF_Child(ArrayB:Tab):integer; implementation function DF_Child(ArrayB:Tab):integer; var i, j:integer; V:string; begin for i := low(ArrayB) to High(ArrayB) do begin V:= ''; for j := Low(ArrayB[i, 1]) to High(ArrayB[i,1]) do V := IntToStr(ArrayB[i,j]) ','; Form2.ListBox1.Items.Add(V); result := 2; end; end; |
vickyju
一般會員 發表:2 回覆:4 積分:1 註冊:2005-03-11 發送簡訊給我 |
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
|
vickyju
一般會員 發表:2 回覆:4 積分:1 註冊:2005-03-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |