기존 integer 값 검증 함수다.
bool __fastcall IsInteger( const AnsiString &Value )
{
    try
    {
        StrToInt( Value );
        return true;
    }
    catch ( ... )
    {
        return false;
    }
}
사용예
AnsiString Value = "10000";
int VInt = 0;
if ( IsInteger( Value ) == true )
{
    VInt = StrToInt( Value );
}
숫자 변환함수를 호출하고 true 를 리턴한다.
에러가 발생하면 false 를 리턴한다.
이 방법은 exception 발생에 의한 방법이라 디버깅이 귀찮아 지게 된다.

다음은 검증/변환을 해주는 각종 VCL 함수다.
extern PACKAGE bool __fastcall TryStrToFloat(const AnsiString S, Extended &Value);
extern PACKAGE bool __fastcall TryStrToFloat(const AnsiString S, double &Value);
extern PACKAGE bool __fastcall TryStrToFloat(const AnsiString S, float &Value);
extern PACKAGE bool __fastcall TryStrToInt(const AnsiString S, int &Value);
extern PACKAGE bool __fastcall TryStrToDateTime(const AnsiString S, System::TDateTime &Value);
같은 이름 유형으로 함수가 더 있다.
이 함수들은 서로 다른 델파이 함수를 포장해 논 것이다.
이 외에서 StrToIntDef 등의 변환 오류시 기본값으로 반환하는 함수도 있다.

사용예
AnsiString Value = "1000";
int VInt = 0;
if ( TryStrToInt( Value, VInt ) == true )
{
}

+ Recent posts