variant record 使用多個 case |
尚未結案
|
zombit
初階會員 發表:63 回覆:39 積分:30 註冊:2004-05-11 發送簡訊給我 |
Compile 不過,
只有一個 case 的話就ok,
請問怎麼處理, 謝謝.
TFruit = record name : string[20]; Case isRound : Boolean of True: (diameter : Single); False: (length : Single; width : Single); Case isSomething : Boolean of True: (a: integer); False: (c: char); end; |
yhchu
一般會員 發表:2 回覆:70 積分:24 註冊:2004-01-28 發送簡訊給我 |
好像 record 定義本來就只能有一個 variant part 吧?不知道可不可以做成兩個 record type?像是
TFruitShape = record
Case isRound : Boolean of
True:
(diameter : Single);
False:
(length : Single;
width : Single);
end; TFruit = record
name : string[20];
shape: TShape;
Case isSomething : Boolean of
True:
(a: integer);
False:
(c: char);
end;
我沒有試過,你可以試試看。要是不行,可以再把 TFruit 裡的 shape 改成 ^TShape 試試看。 另外,你想設計的 type 好像可以用物件導向的繼承方式做?
|
zombit
初階會員 發表:63 回覆:39 積分:30 註冊:2004-05-11 發送簡訊給我 |
HI yhchu,
我試出來了,
不過兩個 case 不能是平行的,
要在一個 case 裡面再放一個 case,
TProgramItem = record Name: string; FileLocation: string; // ?? Owner: string; Tel: string; Enable: Boolean; case SourceType: TSource of tsInternet: ( IP: array[0..4] of string[128]; EmergencyFileLocation: string[128]; EmergencyEnable: Boolean; IntervalSec: Word; MaxToleranceSec: Word; // type Word = 0..65535; case PeriodType: TPeriodType of tpDay: (); tpWeek: (Weeks: TPeriodWeeks); tpSpecificDate: (DateList: TList); ); tsCallIn: ( ); end;不過想請問一下您說的 "你想設計的 type 好像可以用物件導向的繼承方式做?" 可以大概說明一下嗎? 謝謝. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |