Q&A

  • 김경록 님 보세요... 문자열 비교에 대해서....
아래 내용은 님이 답변한 내용 입니다.
///////////////////////////////////
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;

5  COMMENTS
  • Profile
    최석기 2002.07.18 20:22
    델파이에서 string의 구조 형태는 C에서 String의 형태랑은 조금 틀린 형태를 가지거든요.

    델파이에서 스트링은 첫자리에 스트링 전체 길이가 들어 있고 실제 자료의 시작은 1번 인덱스부터 시작합니다.

    그래서 첫번째 글자를 비교하기 위해 0번 인덱스를 사용한게 아니라 1번 인덱스를 사용한거죠.

    in 이라는 예약어는 범위 검색을 위해 사용되어지는 예약어이죠.
    in 명령어를 사용하기 위한 비교되어지는 것은 order 그러니까 순서가 있어야 합니다.

    그렇기 때문에 순서를 가지는 타입은 모두 가능하죠, 숫자 형이라든지 Char(Ascii 값 순서)등은 비교 대상이 되어질 수 있습니다.

  • Profile
    KDDG_ZZOM 2002.07.18 19:53
    맞는지는모르지만...
    in에서사용되는것은 숫자형만 가능하고 string은 물가능할겁니다...
    하지만 char 1바이트는 가능합니다...
    그래서 1바이트만 짤라서 비교한것같습니다...
    참고로 case문에서도 숫자만 가능하지만 char 1바이트는 가능합니다...
    주의하실점은 널일경우 예외처리해주셔야 될것같네요...
    설명이 허접하네요... 즐프하세요...

  • Profile
    강동순 2002.07.18 20:17

    안녕하세요

    수고 많습니다.

    답변에 감사 드립니다.

    제가 하고자 하는 작업은 아래와 같습니다.

    str1:='True';str2:=False;str3:=False;

    비교하고자 하는 문자열을  세개 문자열과  비교하여 해당하는 값이

    있는 문자열 변수를 찾고 싶습니다.

    if ('True')[ ]in[str1,str2,str3] then
      begin
      ShowMessage('찾고하는 문자열이 str1에 있습니다.');
      end;

    이렇게 작업을 할 예정이었습니다.

    String이 안되면 다른 방법을 찾아 봐야겠습니다.

    답변에 감사 드립니다.

    수고 하세요
  • Profile
    최석기 2002.07.18 20:29
    이런 식으로 하는건 어떤지요.

    function CaseString (const s: string; const x: array of string): Integer;
    var i: Integer;
    begin
      Result:= -1; // Default return parameter
      for i:= Low (x) to High (x) do begin
        if s = x[i] then begin
          Result:= i;
          Exit;
        end;
      end;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
      str1,str2,str3, search: string;
    begin
      search:= 'True';
      str1:='True';
      str2:='False';
      str3:='False';
      case CaseString (search, [str1,str2,str3]) of
        0: ShowMessage('찾고하는 문자열이 str1에 있습니다.');
        1: ShowMessage('찾고하는 문자열이 str2에 있습니다.');
        2: ShowMessage('찾고하는 문자열이 str3에 있습니다.');
      end;
    end;

  • Profile
    강동순 2002.07.18 20:32
    • 오정민
    • 2002.07.19 00:59
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 박준열
      2002.07.19 01:33
      TQuery를 사용하면 TDataSet을 얻을수 있고요 이것을 Excel로, Text로, Streem으로 변환이 가능합니다. ...
    • 오정민
      2002.07.19 03:17
      비록 제가 원하는 답은 아니지만  ㅠ.ㅠ 답변감사합니다. 오늘 하루도 즐거운 하루 되세요.
    • 유재훈
    • 2002.07.18 23:59
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.07.19 00:05
      안녕하세요. 최용일입니다. 흠...  TPoint의  포인터인 PPoint를 사용하셔두 되구,...
    • 유재훈
      2002.07.19 00:17
      답변감사합니다. @을 이용해서 해 봤는데 좀 문제가 있어서... TList를 상속한 TPointList라는 놈을 만들...
    • 최용일
      2002.07.19 00:56
      안녕하세요. 최용일입니다. TList에 넣으실려면 참조연산자 쓰시면 안되죠. 각각 메모리 할당받으셔야 ...
    • 이병협
    • 2002.07.18 23:48
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 전병호
    • 2002.07.18 23:00
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이병협
      2002.07.18 23:38
      strPcopy는 델파이 Help에 보시면 Copies a Pascal string to a null-terminated string. 이라 나와 있...
    • 최용일
      2002.07.18 23:38
      안녕하세요. 최용일입니다. Chr($00) 이것때문에 그럴겁니다. PChar는 널종료 문자열이거든요. 그러니까...
    • 전병호
      2002.07.19 01:00
      답변 정말루 감사드려요! 항상 행복하시길.....     
    • 이호성
    • 2002.07.18 21:53
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 서경환
      2002.07.18 23:54
      혹시 데이터 타입이 캐릭터가 아닌가요. 아만 빈칸이 있지 않을까 싶은데...
    • 이호성
      2002.07.19 00:55
      데이타 타입은 varchar맞습니다. 캐릭터면 제가 add문에서 잘못한게 있나요? 서브쿼리를 따로 실행하면 ...
    • 아폴론
    • 2002.07.18 21:38
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.07.19 00:01
      안녕하세요. 최용일입니다. 현재 활성화된 워크북(ActiveWorkBook)에 쉬트만 추가하시면 될거같네요... ...
    • 아폴론
      2002.07.19 00:38
             if FExcelCreate = True  then begin    ...
    • KDDG_ZZOM
      2002.07.18 21:28
      레코드수 만큼 루프돌리면서 하시면 안되나요?
    • 한대필
    • 2002.07.18 20:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.07.18 21:31
      안녕하세요. 최용일입니다. Visible속성 다 되는데요... Visible꺼놓으면 다 안 보이는데... 탭까지 ...
    • 윤수
    • 2002.07.18 20:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신강섭
      2002.10.02 19:42
      볼렌드사에서도 델파이로 wince용 어플리케이션을 만드는 툴을 소개했다고 전에 잡지에서 본것 같은데 ...
    • 최용일
      2002.07.18 23:32
      안녕하세요. 최용일입니다. 뭐 여러가지 방법이 있겠지만.... 걍 Window Procedure를 바꾸어 버리세...
    • ybkim
      2002.07.19 00:56
      내용없습니당
    • 강동순
    • 2002.07.18 19:45
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      2002.07.18 20:22
      델파이에서 string의 구조 형태는 C에서 String의 형태랑은 조금 틀린 형태를 가지거든요. 델파이에서 ...
    • KDDG_ZZOM
      2002.07.18 19:53
      맞는지는모르지만... in에서사용되는것은 숫자형만 가능하고 string은 물가능할겁니다... 하지만 char 1...
    • 강동순
      2002.07.18 20:17
      안녕하세요 수고 많습니다. 답변에 감사 드립니다. 제가 하고자 하는 작업은 아래와 같습니다. ...
    • 최석기
      2002.07.18 20:29
      이런 식으로 하는건 어떤지요. function CaseString (const s: string; const x: array of string): Int...
    • 강동순
      2002.07.18 20:32
    • 햇살
    • 2002.07.18 17:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 배경
      2002.07.18 22:16
      델파이 4.0의 퀵리포트 지원 업테이트 파일을 한번 깔아보세요
    • 허정수
      2002.07.19 05:26
      아..안녕하세요... 자문자답이 되어버리네요... 그냥 조용히 잇을까 하다가... 혹시나 저 말고 궁...
    • Scott
    • 2002.07.18 08:32
    • 2 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.07.18 18:25
      데이타베이스가 오라클이라면 decode문으로 3로우를 1로우를 처리하시면 될것같은데.... 퀵에서는 잘모...
    • 장태원
      2002.07.18 19:55
      하하...쿼리에서...수정하세요. 쿼리로 안된다면, 코딩이네용.. 앗.! 날짜까정 그룹으로 쿼리해야 될 ...
    • 최종민
      2002.07.18 11:11
      음...저두 잘은 모르지만... GLAux라는게...무슨 컴포넌트 같은데... GLAux.dcu라는 게 없다고 나오는건....
    • 머슴
      2002.07.18 03:35
      제 책에 이런 내용이 있네요... 열심히 베꼈는데.. 도움이 될란지.. OnDBGrid1DrawColumnCell를 이용...
    • 나옹이
      2002.07.18 20:24
      아냅...감사합니다.. 그런데..... 요 아래 내용은 전에도 많이 봤었는데요...... begin  &nb...
    • 머슴
      2002.07.19 22:18
      저도 열심히 베꼈는데 큰 도움이 안되어 죄송합니다.. Table1Notes 은 Table1 컴퍼넌트의 필드명이 Note...
    • 곽충열
    • 2002.07.18 02:04
    • 0 COMMENTS
    • /
    • 0 LIKES