Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

델파이에서 문자열에 있는 문자의 위치는 0부터 시작할까? 아니면 1부터 시작할까?


Recommended Posts

델파이에서 문자열 안에서 X번째 문제를 가리키는 방법은 2가지가 있다. 단, 인덱스가 0부터 시작할 수도 있고, 1부터 시작할 수도 있으므로 그 차이를 알아야 한다.

  • TStringHelper.Chars 프로퍼티를 사용하는 방법: (예문:  S1.Chars[인덱스])
    • 델파이의 String용 Helper는 "모두 일관성 있게 무조건" Index가 0부터 시작한다.
    • 따라서, Helper를 사용하면 문자열을 "일관성 있게" 다룰 수 있어서 좋다. 단, 이 프로퍼티는 '읽기 전용' 이다.
  • String 변수 바로 뒤에 [Index]를 붙이는 방식 (예문:  S1[인덱스], 전통적인 방식이다)
    • 컴파일러 지시자 옵션 {$ZEROBASEDSTRINGS ON/OFF}에 따라 Index가 0부터 시작할 수도 있고, 1부터 시작할 수도 있다.
      • 델파이는 "String 인덱스"가 전통적으로 1부터 시작한다.
        (델파이 컴파일러는 기본 설정이 {$ZEROBASEDSTRINGS OFF}이다 - 2023년 5월 현재 기준)
      • 이를 기준으로 작성한 코드를 계속 사용하려면 이 옵션을 OFF로 지정하도록 한다.
      • 그렇지 않고, 문자열의 인덱스가 0부터 시작하게 하려면 이 옵션을 ON으로 지정한다.

예를 들면 다음과 같다.

S1 := ''반가워''; 인 경우:

  • S1.Chars[1]의 값은?
    • (즉, 인덱스 1은 두번째 문자를 가리킨다)
  • S1[1]의 값은?
    • {$ZEROBASEDSTRINGS OFF}로 설정하면
      • (즉, 인덱스는 1부터 시작하므로, 인덱스 1은 첫번째 문자를 가리킨다) 
    • {$ZEROBASEDSTRINGS ON}로 설정하면
      • (즉, 인덱스는 0부터 시작하므로, 인덱스 1은 두번째 문자를 가리킨다)

[예제 소스 ]

https://github.com/Codetalk2022/DelphiTraining/blob/main/Object Pascal Language/String/StringIndex/StringIndex.dpr

[더 알아보기]

델파이의 String 타입을 충분히 이해하고 싶다면, Delphi Object Pascal Handbook (영문, 무료 PDF 다운로드): "06장 All about strings"을 볼 것을 권한다. 위 설명과 예제 역시 이 책에 있는 내용이 바탕이 되었다.

Edited by CodeTalk
이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.