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

請教序數函數High和Low的意義及使用

尚未結案
sumeihua
一般會員


發表:9
回覆:13
積分:4
註冊:2004-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-29 22:42:55 IP:63.84.xxx.xxx 未訂閱
請教各位先進:    Delphi提供的簡單資料型態(Simple Types)中序數(Ordinal)資料型態的High, Low函數分別為何意義, 及其使用方法為何?    謝謝!    ====================================== 誠心向學! 肯請指教! ======================================
------
======================================
誠心向學! 肯請指教!
======================================
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-29 22:56:48 IP:61.230.xxx.xxx 未訂閱
Hi您好: 您可以試試用Delphi Help 查一下High /Low Function:    High: Returns the highest value in the range of an argument. Low: Returns the lowest value in a range.    
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;    type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
   function Sum( var X: array of Double): Double;        { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.DFM}    procedure TForm1.Button1Click(Sender: TObject);
var
  List1: array[0..3] of Double;
   X: Word;
   S: String;
begin
  for X := Low(List1) to High(List1) do
    List1[X] := X * 2.0;
    Str(Sum(List1):4:2, S);
    S := 'Sum of List1: '   S   #13#10;
    showmessage(S);
end;    function TFORM1.Sum( var X: array of Double): Double;    var
  I: Word;
  S: Real;
begin
  S := 0; { Note that open array index range is always zero-based. }
  for I := 0 to High(X) do S := S   X;
  Sum := S;
end;    end.
[i]~悠遊法國號~ 發表人 - yachanga 於 2004/04/29 22:59:00
sumeihua
一般會員


發表:9
回覆:13
積分:4
註冊:2004-04-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-30 08:55:42 IP:63.84.xxx.xxx 未訂閱
感謝yachanga先進的指教﹒    我有去Delphi Help中的解釋看過﹐但依然不得其解﹐High和Low函數的意義和作用到底為何﹖可能是英文比較差吧﹐慚愧中﹒﹒﹒    可否勞煩先進做進一步的解釋指點﹐謝謝﹗    ====================================== 誠心向學! 肯請指教! ======================================
------
======================================
誠心向學! 肯請指教!
======================================
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-30 09:23:35 IP:211.74.xxx.xxx 未訂閱
引言: 感謝yachanga先進的指教﹒ 我有去Delphi Help中的解釋看過﹐但依然不得其解﹐High和Low函數的意義和作用到底為何﹖可能是英文比較差吧﹐慚愧中﹒﹒﹒ 可否勞煩先進做進一步的解釋指點﹐謝謝﹗ ====================================== 誠心向學! 肯請指教! ======================================
Hi sumeihua 您好: 您客氣了, 我試著解釋看看, 解釋不好請勿見怪 在使用>秀出陣列> >秀出> >秀出> >秀出 > >~悠遊法國號~
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-01 22:20:05 IP:61.229.xxx.xxx 未訂閱
sumeihua,您好:   Ordinal型態的資料,一般而言,就是數字與char,另外,列舉型態(Enumerated type)也算是.例如TDataSetState(用於指示TDataSet目前的status)等.應用上,可以與Case...of搭配,比起一堆的 If-then-else if 在程式的可讀性上來說會好很多.   High,Low函數,主要用於檢查一個一維陣列的起始與終止的索引值.舉例而言,有個函數是求總合的.可以傳入若干個數字,然後回傳這些數字的加總值.要達到這樣的功能,函數的輸入參數就不能一個一個的指定,因為不曉得究竟會有多少個數字要傳入,此時可以用動態陣列來解決.定義傳入函數的參數,為一個不定長度的陣列,然後應用High與Low來取得傳入陣列的長度,然後計算加總值回傳.如下:
function GetSum(ai: array of integer): Integer; //傳入一個動態陣列
var
  i:Integer;
begin
  Result:=0;
  for i:=low(ai) to high(ai) do //low(ai),high(ai)分別取得陣列的最小與最大索引值
    Result:=Result+ai[i]; 
end;
像這樣以動態陣列做為函數的傳入參數,可以用來解決大部分需要傳入不定數量的參數的問題,而此時必需配合Low與High函數,才能取得陣列的每個元素值
sumeihua
一般會員


發表:9
回覆:13
積分:4
註冊:2004-04-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-05-06 10:47:57 IP:63.84.xxx.xxx 未訂閱
謝謝解答﹗    研究了好些天﹐總算是有些端倪了﹒ 謝謝change.jian兄和yachanga兄的幫助﹗    ====================================== 誠心向學! 肯請指教! ======================================
------
======================================
誠心向學! 肯請指教!
======================================
系統時間:2024-05-15 21:03:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!