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

如何取得數字集合裡的值

答題得分者是:jow
hazard
一般會員


發表:30
回覆:24
積分:10
註冊:2006-10-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-01-25 18:40:08 IP:59.125.xxx.xxx 訂閱
Type
TIntSet = Set of 1..255;
var
IntA : TIntSet;
begin
IntA = [100, 200];
end;
請問我如何取得 IntA 第一個值,也就是 100
John Wong
初階會員


發表:1
回覆:35
積分:32
註冊:2004-09-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-01-27 23:49:44 IP:219.77.xxx.xxx 未訂閱
Set不是這樣用的, Set內的member並沒有先後次序的, 只是有或是沒有, 例如:
if 100 in IntA then ....

if [100, 200] <= IntA then ....

以你要求來說, 應該便用TList或是array才適合.
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-01-28 00:13:32 IP:203.73.xxx.xxx 訂閱
查一下TypeInfo..我記得是可以取得Enumerated Type or Set的Name
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
hazard
一般會員


發表:30
回覆:24
積分:10
註冊:2006-10-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-01-30 22:22:37 IP:59.125.xxx.xxx 訂閱
John Wong 兄,Set 的用法我知道,因為我程式一開始宣告了很多
IntA : TIntSet;
IntB : TIntSet;
IntC : TIntSet;
....
....
並給值,
IntA = [50];
IntB = [2, 4, 6];
IntC=[11, 22, 33];
...
...
其中有幾個集合數是只有一個的,
這時需要判斷該集合裡是那個數字,
Coffee 提到的 TypeInfo 我也有查到,但看不太懂他的用法,不知是否能指導一下
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-08-05 00:30:00 IP:211.76.xxx.xxx 訂閱
<textarea class="delphi" rows="10" cols="60" name="code"> unit TestMain; interface uses Forms, Controls, StdCtrls, Classes; type TInt = 1..255; TIntSet = Set of TInt; TIntArray = array of Integer; TForm1 = class(TForm) Button1: TButton; ListBox1: TListBox; procedure Button1Click(Sender: TObject); public function CountOf(ASet: TIntSet): Integer; function Set2Array(ASet: TIntSet): TIntArray; end; var Form1: TForm1; IntA: TIntSet = [100, 200]; implementation {$R *.dfm} uses SysUtils; { TForm1 } function TForm1.CountOf(ASet: TIntSet): Integer; var L: TInt; begin Result := 0;//Element Count of Set for L := Low(TInt) to High(TInt) do begin if ASet = [] then Break else if L in ASet then begin Inc(Result); ASet := ASet - [L]; end; end; end; function TForm1.Set2Array(ASet: TIntSet): TIntArray; var I: Integer; L: TInt; begin SetLength(Result,CountOf(ASet));//Set-Length of Elements of Set if (ASet <> []) and (Length(Result)>0) then begin I := 0; for L := Low(TInt) to High(TInt) do if ASet = [] then Break else if L in ASet then begin Result[I] := L; ASet := ASet - [L]; Inc(I); end; end; end; procedure TForm1.Button1Click(Sender: TObject); var I: Integer; A: TIntArray; begin A := Set2Array(IntA); try for I := 0 to Length(A)-1 do ListBox1.Items.Add(IntToStr(A[I])); finally A := nil; end; end; </textarea> 太久沒來,這裡好像變熱鬧了...
系統時間:2017-10-17 17:37:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!