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

如何偵測輸入的是字串或數字

尚未結案
北方佬
一般會員


發表:15
回覆:35
積分:10
註冊:2005-07-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-02 15:29:54 IP:202.145.xxx.xxx 未訂閱
我是使用下列方式偵測空字串,但是我不知道要如何偵測字串或數字。 我想要的功能是只要輸入數字以外的文字或符號就"return",請問各位大大要用什麼方式才可以做?  
 
InputQuery("School Point","Please Input",aStr)) if (aStr=="") { return; }
 
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-02 15:55:53 IP:219.68.xxx.xxx 未訂閱
參考以下 http://delphi.ktop.com.tw/topic.php?topic_id=48070 http://delphi.ktop.com.tw/topic.php?topic_id=66954 發表人 - supman 於 2005/08/02 15:57:50
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-03 03:27:01 IP:61.230.xxx.xxx 未訂閱
北方佬 您好:    參考一下以下作法:
AnsiString chkStr="0123456789";  // 要檢查的數字字元 (可視需要自行增添,例如小數點)
bool isNum = true;  // 先假設字串內容是數字
for (int i=1; i<=aStr.Length(); i  ) {
    if(chkStr.Pos(aStr.SubString(i, 1)) == 0){ // 如果不是 chkStr 之中的任一字元
        isNum = false; // 字串內容含有非數字的字元
        break;
    }
}    if (!isNum) { // 若不是數字資料
    return;
}
如果您的程式中有多處需要用到相同比對方式,也可以考慮將上述動作寫成自定函式,以便於使用,例如:
bool __fastcall isNum(AnsiString Str)
{
    AnsiString chkStr="0123456789.";
    bool isNumFlag = true;
    for(int i=1; i<=Str.Length(); i  ){
        if(chkStr.Pos(Str.SubString(i,1)) == 0){
            isNumFlag = false;
            break;
        }
    }        return isNumFlag;
}
然後在您的程式中寫成:
AnsiString aStr;
InputQuery("School Point","Please Input",aStr);
if (aStr=="") {
    return;
}
if (!isNum(aStr)) {
    return;
}
7 天天敲鍵盤 v 時時按滑鼠 8 發表人 - RedSnow 於 2005/08/03 03:40:45
北方佬
一般會員


發表:15
回覆:35
積分:10
註冊:2005-07-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-03 08:46:13 IP:202.145.xxx.xxx 未訂閱
謝謝大大指教,回家來去試試,感恩。
系統時間:2024-06-18 21:54:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!