請教序數函數High和Low的意義及使用 |
尚未結案
|
sumeihua
一般會員 發表:9 回覆:13 積分:4 註冊:2004-04-24 發送簡訊給我 |
請教各位先進: Delphi提供的簡單資料型態(Simple Types)中序數(Ordinal)資料型態的High, Low函數分別為何意義, 及其使用方法為何? 謝謝! ======================================
誠心向學! 肯請指教!
======================================
------
====================================== 誠心向學! 肯請指教! ====================================== |
yachanga
資深會員 發表:24 回覆:335 積分:296 註冊:2003-09-27 發送簡訊給我 |
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 發送簡訊給我 |
感謝yachanga先進的指教﹒ 我有去Delphi Help中的解釋看過﹐但依然不得其解﹐High和Low函數的意義和作用到底為何﹖可能是英文比較差吧﹐慚愧中﹒﹒﹒ 可否勞煩先進做進一步的解釋指點﹐謝謝﹗ ======================================
誠心向學! 肯請指教!
======================================
------
====================================== 誠心向學! 肯請指教! ====================================== |
yachanga
資深會員 發表:24 回覆:335 積分:296 註冊:2003-09-27 發送簡訊給我 |
引言: 感謝yachanga先進的指教﹒ 我有去Delphi Help中的解釋看過﹐但依然不得其解﹐High和Low函數的意義和作用到底為何﹖可能是英文比較差吧﹐慚愧中﹒﹒﹒ 可否勞煩先進做進一步的解釋指點﹐謝謝﹗ ====================================== 誠心向學! 肯請指教! ======================================Hi sumeihua 您好: 您客氣了, 我試著解釋看看, 解釋不好請勿見怪 |
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |