아래 내용은 님이 답변한 내용 입니다.
///////////////////////////////////
In을 써보시는게..
If UpperCase(Copy(Edit1.Text, 1, 1))[1] in ['A'..'Z', 'a'..'z'] Then
Begin
Exit;
End
Else Begin
ShowMessage('뭔가 에러났는데여~~~');
End;
////////////////////////////////////////////////////////////////
안녕하세요
수고 많습니다.
'문자열 비교' 관하여 검색 하니 님이 답변한 내용이 제가 하고자 하는
작업내용 문자열 비교에 도움이 되게 되었습니다.
그런데 이해가 되지 않는 부분이 있어서 질문을 하게 되었습니다.
If UpperCase(Copy(Edit1.Text, 1, 1))[1] 이부분에서 [1]이 무엇을
뜻하는지 잘 모르겠습니다.
저에게 깨우침을 주십시오
감사 합니다.
수고 하세요
>아래처럼 비교를 해봤는데 잘 안되네요.. 그냥 넘어가 버립니다.
>처음 생각에서는 copy(Edit1.text, 1, 3) 이 알파벳이냐를 비교 하고 싶었는데..
>여러가지 방법을 동원해 봤는데, 잘 안되더라구요.
>그래서 아래처럼 했는데도 마찮가지네요. >고수님들께서 답변좀 해주세요. >그럼 수고하세요.
> If ((uppercase(copy(Edit1.Text, 1, 1)) >= 'A') OR
> (Uppercase(Copy(Edit1.text, 1, 1)) <= 'Z')) then
> Exit
> Else
> Begin
> Begin
> Showmessage('잘못 입력 하셨습니다.');
> Edit1.SetFocus;
> Exit;
> End;
> Edit1.SetFocus;
> End;
델파이에서 스트링은 첫자리에 스트링 전체 길이가 들어 있고 실제 자료의 시작은 1번 인덱스부터 시작합니다.
그래서 첫번째 글자를 비교하기 위해 0번 인덱스를 사용한게 아니라 1번 인덱스를 사용한거죠.
in 이라는 예약어는 범위 검색을 위해 사용되어지는 예약어이죠.
in 명령어를 사용하기 위한 비교되어지는 것은 order 그러니까 순서가 있어야 합니다.
그렇기 때문에 순서를 가지는 타입은 모두 가능하죠, 숫자 형이라든지 Char(Ascii 값 순서)등은 비교 대상이 되어질 수 있습니다.