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

請教Delphi 7一個特殊語法那就是?與:

尚未結案
aAlan
一般會員


發表:38
回覆:24
積分:12
註冊:2004-07-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-04 23:38:28 IP:61.228.xxx.xxx 未訂閱
各位先進您好: 在C#中有一種可以取代if..else的簡寫語法,例如: status?"正常":"異常" 相當於 var A:string; if status then A:='正常' else A:='異常'; 可是在Delphi這樣寫,似乎太繁雜了,有沒有可以像C#這樣簡潔的語法呢? 發表人 - aAlan 於 2004/08/04 23:39:55
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-05 01:23:53 IP:203.204.xxx.xxx 未訂閱
aAlan 你好
這個問題的解通常是自定一個Function來使用,    Function IIF(Value:Boolean; ValueTrue, ValueFalse : Variant):Variant;
Begin
  If Value Then 
    Result := ValueTrue
  Else
    Result := ValueFalse;
End;    在使用時則可以如下方式呼叫    Msg:= '系統運作:' IIF(Status,'正常','異常');
_______________________________________ 深藍的魚,祝您好運..........連連
chiehmin
高階會員


發表:13
回覆:134
積分:134
註冊:2002-05-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-05 08:37:11 IP:61.221.xxx.xxx 未訂閱
亦可以利用StrUtils或Math units裡現有的IfThen function來處理... uses StrUtils, Math; function IfThen(AValue: Boolean; const ATrue: Integer; const AFalse: Integer = 0): Integer; overload; function IfThen(AValue: Boolean; const ATrue: Int64; const AFalse: Int64 = 0): Int64; overload; function IfThen(AValue: Boolean; const ATrue: Double; const AFalse: Double = 0.0): Double; overload; function IfThen(AValue: Boolean; const ATrue: string; const AFalse: string = ''): string; overload;
SnoopyChen
一般會員


發表:1
回覆:17
積分:18
註冊:2003-07-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-08 02:13:23 IP:211.21.xxx.xxx 未訂閱
使用 x:=IfThen(expr,val1,val2); 並不完全對應為   if expr then x := val1 else x := val2; 千萬要小心副作用, ifThen在Delphi中是以函式的方式 呼叫, 因此會先計算出val1及val2的值再帶入IfThen() 函式中。所以如果val1或val2是另一個函式, 它的副作 用可能是:
  • 若該函式分別改變某全域變數, 那麼不論是true或false都一定會改變, 而 C 的 x = expr ? i++: j++; 只會執行 i++ 或 j++ 其中之一。
  • 若該兩函式分別要花n1、n2的計算時間, 那麼你共要等n1+n2的時間, 而不是n1或n2的時間
所以使用ifthen()時最好是帶入常數值或單純變數, 其實 真該建議borland將之廢除, 要不然就是真如同C語言般的 實作, 而不是用函數呼叫的方式, 否則會讓人誤入歧途而 不自覺。
系統時間:2024-05-05 20:08:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!