全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1334
推到 Plurk!
推到 Facebook!

delphi中procedure中的參數不能是動態陣列嗎?

答題得分者是:sos_admin
neoaj23
一般會員


發表:35
回覆:7
積分:8
註冊:2003-09-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-19 15:45:45 IP:61.219.xxx.xxx 未訂閱
procedure SaveData(PeopleName: array of String; PeopleCount: Integer); begin SetLength(PeopleName, PeopleCount); end; compile過不了.... 1.如果PeopleName是外部變數,而非procedure SaveData的參數則SetLength沒問題,請問這種問題如何解決? 2.又SetLength的第一個參數,必須是指標嗎?
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-19 16:23:27 IP:61.155.xxx.xxx 未訂閱
当例程使用数组参数时,你不能在声明参数时包含索引说明符。也就是说,声明 procedure Sort(A: array[1..10] of Integer); // 语法错误 产生编译错误,但 type TDigits = array[1..10] of Integer; procedure Sort(A: TDigits); 是有效的。但在大多数情况下,开放数组参数是更好的办法。
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-19 16:23:41 IP:61.155.xxx.xxx 未訂閱
当例程使用数组参数时,你不能在声明参数时包含索引说明符。也就是说,声明 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-19 18:51:17 IP:203.222.xxx.xxx 未訂閱
引言: 当例程使用数组参数时,你不能在声明参数时包含索引说明符。也就是说,声明 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 來實做
系統時間:2024-05-09 8:32:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!