StrToInt 라는 함수를 사용해서 우리는 문자열을 숫자로 변환한다.
하지만 이게 전부 숫자로 이루어진 문자열인지 궁금해질 때가 있다.
무턱대고 변환만 시켜대다간, 에러메세지를 만나게 된다.
예를 들어,
Form1.Width:=StrToInt('3a33');
위와 같은 코드는
'3a33' is is not a valid integer value.
이런 에러메세지를 토하게 된다.
원래라면 그런 의미로 쓰자는 건 아니겠지만 어떤 문자열이 숫자로만 이루어져 있는지 판단하는데 TryStrToInt 라는 함수를 사용할 수 있다.
SysUtils 에 정의되어 있으며, Syntax 는 아래와 같다.
function TryStrToInt(const S: string; out Value: Integer): Boolean;
S 로 전달받은 문자열이 전부 숫자일 경우 포인터로 넘겨받은 Value 에 변환값을 넣고 True 를 반환하며,
만약 전달받은 문자열이 숫자가 아닐 경우에 False 를 반환한다.
procedure Form1.Button1Click(Sender: TObject);
var RetInt: Integer;
begin
if TryStrToInt(Edit1.Text, RetInt) then Self.Width:=RetInt
else ShowMessage('숫자만 넣으라고 했잖소');
end;
예를 들어 위의 코드는 Edit1 이라는 TEdit 에 폼의 크기를 정할 숫자를 입력받아 해당 문자열이 전부 숫자인지 검사한 후,
전부 숫자라면 폼의 가로크기를 해당 숫자만큼 바꾸고,
전부 숫자가 아니라면 '숫자만 넣으라고 했잖소' 라는 메세지창을 출력한다.
참고로, TryStrToInt 는 16진수도 변환해준다.
예를 들어 '$FF' 라는 문자열의 변환을 시도할 경우 Value에 256을 세팅하고 True 를 반환해준다.
StrToInt 도 마찬가지다.
참고로 16진수 헥사코드를 받아들여 변환하지 않고 십진수만 할거라면 아래와 같이 함수를 만들면 된다.
function TryDecimalStrToInt(const S: String; out Value: Integer): Boolean;
begin
Result:=(Pos('$', S)=0) and TryStrToInt(S, Value);
end;
위와 같이 만들었다면 '$FF' 를 넣을 경우 False 를 반환한다.
StrToIntDef 도 참고로 볼 것.
'Delphi' 카테고리의 다른 글
[Delphi] 유니코드인지 판별하는 법 (텍스트 파일) (0) | 2009.04.18 |
---|---|
[Delphi] 유니코드 파일 쓰기 (0) | 2009.04.18 |
[Delphi] 시스템에 설치되어 있는 폰트들의 리스트 출력 (0) | 2009.04.18 |
[Delphi] 에디트박스에 셀 선택하기 (마우스로 드래그한 효과) (0) | 2009.04.18 |
[Delphi] TColor 와 R,G,B 전환하기 (0) | 2009.04.18 |