C++Builder Tips


入力項目の型チェック


日付・時刻の型判定でtry〜catchを使用するのはなんとなくイヤなんですが、他にいい方法ってあるんでしょうか。
ご存知の方がいらっしゃいましたらお教えください。

//-------------------------
// 日付時刻型のチェック
//-------------------------
bool IsDateTime(AnsiString str)
{
  try{
    TDateTime dtDateTime = VarToDateTime(str); //StrToDateTimeでもOK
    return true;
  }catch(...){
    return false;
  }
}

//-------------------------
// 日付型のチェック
//-------------------------
bool IsDate(AnsiString str)
{
  try{
    TDate dtDate = StrToDate(str);
    return true;
  }catch(...){
    return false;
  }
}

//-------------------------
// 時刻型のチェック
//-------------------------
bool IsTime(AnsiString str)
{
  try{
    TTime dtTime = StrToTime(str);
    return true;
  }catch(...){
    return false;
  }
}

//-------------------------
// 整数型のチェック
//-------------------------
bool IsNumeric(AnsiString str)
{
  try{
    int i = StrToInt(str);
    return true;
  }catch(...){
    return false;
  }
}

//-------------------------
// 英字のチェック
// 英字以外の文字があればfalseを返却
//-------------------------
bool IsAlpha(AnsiString str)
{
  for (int i=1;i<str.Length()+1;i++){
    if (str[i]>=0x41 && str[i]<=0x5a){ //英大文字
    }else{
      if (str[i]>=0x61 && str[i]<=0x7a){ //英小文字
      }else{
        return false;
      }
    }
  }
  return true;
}

//-------------------------
// 全角文字のチェック
// 全角文字以外の文字があればfalseを返却
//-------------------------
bool IsWide(AnsiString str)
{
  for (int i=0;i<str.Length();i+=2){
    if (str.IsLeadByte(i+1)){
    }else{
      return false;
    }
  }
  return true;
}


DownLoad bcbtips064.lzh 4KB(BCB5)