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

請問Procedure / Function如何傳遞陣列

答題得分者是:hagar
kkccgg
初階會員


發表:50
回覆:54
積分:30
註冊:2002-07-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-22 22:03:21 IP:203.204.xxx.xxx 未訂閱
請問在Procedure和Function(含回傳值)中如何傳陣列      Thanks 發表人 -
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-22 22:31:14 IP:202.39.xxx.xxx 未訂閱
function 的回傳陣列方式參考: http://forum.vclxx.org/topic.php?TOPIC_ID=3236&FORUM_ID=8&CAT_ID=2&Topic_Title=function+%A5i%A5H%A6%5E%B6%C7%B0%7D%A6C%B6%DC&Forum_Title=Pascal     procedure 傳陣列的方式如下:
procedure SomeProc(const MyArray: array of integer);
var i: Integer;
begin
  for i := Low(MyArray) to High(MyArray) do
end;
   
procedure SomeProc(var MyArray: array of integer);
var i: Integer;
begin
  for i := Low(MyArray) to High(MyArray) do
end;
發表人 - hagar 於 2002/10/22 22:42:05
seedbcc
高階會員


發表:232
回覆:272
積分:105
註冊:2003-12-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-29 16:15:12 IP:221.169.xxx.xxx 未訂閱
procedure SomeProc(const MyArray: array of integer); procedure SomeProc(var MyArray: array of integer); 一個用 const, 一個用 var ;有什麼差異呢?
seedbcc
高階會員


發表:232
回覆:272
積分:105
註冊:2003-12-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-29 16:21:08 IP:221.169.xxx.xxx 未訂閱
procedure CharToNum (LenD:Integer;DP:integer;var EachDiSo:Array[0..1,1..30] of string); 出現下面error,請教 如何 解決呢? [Error] frm_SystemSet.pas(1082): 'OF' expected but '[' found
a6475
高階會員


發表:67
回覆:230
積分:154
註冊:2002-09-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-30 09:03:32 IP:211.23.xxx.xxx 未訂閱
如果果陳列有指定小大的話,可以先用type指定 type Tary : array [0..10] of integer; procedure SomeProc(theAry : Tary);    ..-----------βλμε------------..
◎Oo月夜 光明 藍更愁oO◎
藍調月光城v4:http://inping.myweb.hinet.net/ (暫時使用中..) 明日報(藍調.月光):http://mypaper2.ttimes.com.tw/user/a6475 發表人 - a6475 於 2004/06/30 09:05:03
------
月夜 光明 藍更愁
seedbcc
高階會員


發表:232
回覆:272
積分:105
註冊:2003-12-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-30 10:32:15 IP:221.169.xxx.xxx 未訂閱
unit .... interface ... .. uses... ...... type Tsysset = class(TForm) procedure...... procedure...... protected public EngAry:Array[0..1,1..30] of string; procedure CharToNum(LenD:Integer;DP:integer;EachDiSo:EngAry); end; var ............ implementation {$R *.dfm} procedure ............... 依然出現錯誤 [Error] frm_SystemSet.pas(1070): Undeclared identifier: 'EngAry'
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-06-30 10:42:20 IP:202.39.xxx.xxx 未訂閱
unit ....
interface ...
..
uses...
......
type
  EngAry: Array[0..1,1..30] of string;    type 
  Tsysset = class(TForm)
    procedure......
    procedure......
  protected
  public
    procedure CharToNum(LenD: Integer; DP: integer; EachDiSo: EngAry);
  end;    var
............
implementation    {$R *.dfm}
procedure ...............    
-- Everything I say is a lie.
seedbcc
高階會員


發表:232
回覆:272
積分:105
註冊:2003-12-10

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-06-30 10:58:11 IP:221.169.xxx.xxx 未訂閱
版主 你的答案我照打了 但是有error [Error] frm_SystemSet.pas(15): '=' expected but ':' found
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-06-30 11:15:10 IP:202.39.xxx.xxx 未訂閱
Sorry! 改成:
type
  EngAry = Array[0..1,1..30] of string;
-- Everything I say is a lie.
seedbcc
高階會員


發表:232
回覆:272
積分:105
註冊:2003-12-10

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-06-30 11:28:38 IP:221.169.xxx.xxx 未訂閱
我已經改=了 謝啦 延續剛才的問題 我將EachVaDiSo陣列 傳給下列的Procedure做判斷, 也就是 CharToNum(20,1,EachVaDiSo);    那麼EachVaDiso本身的值 如何跟著做改變呢?    
procedure TSystemSet.CharToNum(LenD:Integer;DP:integer;EachDiSo:EngAry);
var m:integer;
begin
  m:=1;
  while m<=LenD do
  begin
    if EachDiSo[DP,m]='A' then EachDiSo[DP,m]:='10';
    if EachDiSo[DP,m]='B' then EachDiSo[DP,m]:='11';
    if EachDiSo[DP,m]='C' then EachDiSo[DP,m]:='12';
    if EachDiSo[DP,m]='D' then EachDiSo[DP,m]:='13';
    if EachDiSo[DP,m]='E' then EachDiSo[DP,m]:='14';
    if EachDiSo[DP,m]='F' then EachDiSo[DP,m]:='15';
    if EachDiSo[DP,m]='G' then EachDiSo[DP,m]:='16';
    if EachDiSo[DP,m]='H' then EachDiSo[DP,m]:='17';
    if EachDiSo[DP,m]='I' then EachDiSo[DP,m]:='18';
    if EachDiSo[DP,m]='J' then EachDiSo[DP,m]:='19';
    if EachDiSo[DP,m]='K' then EachDiSo[DP,m]:='20';
    if EachDiSo[DP,m]='L' then EachDiSo[DP,m]:='21';
    if EachDiSo[DP,m]='M' then EachDiSo[DP,m]:='22';
    if EachDiSo[DP,m]='N' then EachDiSo[DP,m]:='23';
    if EachDiSo[DP,m]='O' then EachDiSo[DP,m]:='24';
    if EachDiSo[DP,m]='P' then EachDiSo[DP,m]:='25';
    if EachDiSo[DP,m]='Q' then EachDiSo[DP,m]:='26';
    if EachDiSo[DP,m]='R' then EachDiSo[DP,m]:='27';
    if EachDiSo[DP,m]='S' then EachDiSo[DP,m]:='28';
    if EachDiSo[DP,m]='T' then EachDiSo[DP,m]:='29';
    if EachDiSo[DP,m]='U' then EachDiSo[DP,m]:='30';
    m:=m 1;
  end;
end;
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-06-30 11:44:04 IP:202.39.xxx.xxx 未訂閱
試試:
procedure CharToNum(LenD: Integer; DP: integer; var EachDiSo: EngAry);
-- Everything I say is a lie.
seedbcc
高階會員


發表:232
回覆:272
積分:105
註冊:2003-12-10

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-06-30 11:57:57 IP:221.169.xxx.xxx 未訂閱
感恩啦!可以了! 感謝版主的指導
seedbcc
高階會員


發表:232
回覆:272
積分:105
註冊:2003-12-10

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-06-30 12:00:42 IP:221.169.xxx.xxx 未訂閱
相信這一個問題=====>Procedure / Function如何傳遞陣列 的答案 應該已經非常完善啦! 日後有人查詢,就可以一覽無遺了 感恩感謝回答這一題的所有高手
系統時間:2024-05-17 16:02:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!