delphi中procedure中的參數不能是動態陣列嗎? |
答題得分者是:sos_admin
|
neoaj23
一般會員 發表:35 回覆:7 積分:8 註冊:2003-09-12 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
当例程使用数组参数时,你不能在声明参数时包含索引说明符。也就是说,声明
procedure Sort(A: array[1..10] of Integer); // 语法错误
产生编译错误,但
type TDigits = array[1..10] of Integer;
procedure Sort(A: TDigits);
是有效的。但在大多数情况下,开放数组参数是更好的办法。 您上问题可以用下面形式解决
type
Ta=array of string;
Tb=array[1..10] of string; procedure aaa(a:Ta);
begin
a[1]:='ddddddddd';
end; procedure bbb(a:Tb);
begin
a[1]:='ddddddddd';
end; 發表人 - sos_admin 於 2003/09/19 16:29:31
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
引言: 当例程使用数组参数时,你不能在声明参数时包含索引说明符。也就是说,声明 procedure Sort(A: array[1..10] of Integer); // 语法错误 产生编译错误,但 type TDigits = array[1..10] of Integer; procedure Sort(A: TDigits); 是有效的。但在大多数情况下,开放数组参数是更好的办法。 您上问题可以用下面形式解决 type Ta=array of string; Tb=array[1..10] of string; procedure aaa(a:Ta); begin a[1]:='ddddddddd'; end; procedure bbb(a:Tb); begin a[1]:='ddddddddd'; end; 發表人 - sos_admin 於 2003/09/19 16:29:31這樣要是你有很多不同大小的陣列,哪你豈不要宣告一大堆 type ? 用動態陣列的開放傳入法就可以了, 用那麼麻煩的方法做什麼 procedure YourProc(YourArray: array of YourType); begin ... end; 所以 neoaj23 的做法是對的, 只是開放陣列是不能重設大小的, 所以是 SetLength(PeopleName, PeopleCount); 這一行過不了 即使是用 sos_admin 的方法, 也是無法在程序中變更 array 的大小的, 因此是 neoaj23 在設計過程上有問題 如果你要用可變大小方式, 建議你改用 List 或是 Stream 來實做 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |