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

兩個巨集、inline 函數 [bool 轉字串]、[字串轉bool]

 
shinnuei
一般會員


發表:32
回覆:48
積分:21
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-08 17:24:50 IP:61.221.xxx.xxx 未訂閱
分享兩個小弟覺得還滿好用的函數: 有時候會把系統的設定存在某些地方,而如果遇到布林值,小弟習慣直接存入"true","false", 如果直接用判斷式去寫,處理起來相當麻煩(很多地方的時候),所以有了以下兩個inline and  macro 的程式。 獻醜..:)
==========
inline function
宣告
  String inline bool2str(bool boolVar);
  bool inline str2bool(String strVar);
程式
String inline bool2str(bool boolVar)
{
  String ret;
  if(boolVar)
    ret = "true";
  else
    ret = "false";
  return ret;
}
bool inline str2bool(String strVar)
{
  bool ret;
  if(strVar.IsEmpty()) return true;
  if(strVar == "true")
    ret = true;
  else
    ret = false;
  return ret;
}
使用方式:
  CheckBox1->Checked = str2bool("true");
  Edit1->Text = bool2str(CheckBox1->Checked);
==========
Macro
#define b2s(b)  ((b) ? ("true") : ("false"))
#define s2b(s)  (((s)=="true") ? (true) :(false))
使用方式:
  CheckBox1->Checked = s2bl("true");
  Edit1->Text = bl2s(CheckBox1->Checked);
發表人 - shinnuei 於 2003/10/08 17:50:11
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-10 23:37:47 IP:61.62.xxx.xxx 未訂閱
Hi, 其實在系統中就有現成的可以用了,    extern PACKAGE bool __fastcall StrToBool(constAnsiString S); extern PACKAGE AnsiString __fastcall BoolToStr(bool B, bool UseBoolStrs = false);    這兩個函數應該可以滿足你的需求,  參考看看!
shinnuei
一般會員


發表:32
回覆:48
積分:21
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-11 15:57:07 IP:61.221.xxx.xxx 未訂閱
原來己經有了哦…我還在想說這麼好用的函式,怎麼會沒有呢… 補充一下使用方式,其實用起來也是相當容易:
extern PACKAGE AnsiString __fastcall BoolToStr(bool B, bool UseBoolStrs = false);
BoolToStr 使用範例
  bvar = true;
  Memo1->Lines->Add(BoolToStr(bvar,true));  //"True"
  bvar = false;
  Memo1->Lines->Add(BoolToStr(bvar,true));  //"False"
  bvar = true;
  Memo1->Lines->Add(BoolToStr(bvar));       //"-1"
  bvar = false;
  Memo1->Lines->Add(BoolToStr(bvar));       //"0"
StrToBool使用範例
  if(StrToBool("true"))
    Memo1->Lines->Add("StrToBool(\"true\") = true");  //印出此行
  else
    Memo1->Lines->Add("StrToBool(\"true\") = false");      if(StrToBool("false"))
    Memo1->Lines->Add("StrToBool(\"true\") = true");
  else
    Memo1->Lines->Add("StrToBool(\"true\") = false");  //印出此行
系統時間:2024-11-28 0:36:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!