Delphi [델파이 문법] 문법 요소 #14

2012.12.17 19:31

관리자 조회 수:5373

■ for 문으로 컨테이너 반복

델파이 컴파일러는 컨테이너에 대해 for-element-in-collection 스타일의 반복을 지원합니
다. 델파이 컴파일러는 다음과 같은 컨테이너 반복 패턴들을 인식할 수 있습니다.

1.png

반복 변수 Element는 컨테이너가가지고 있는 타입과 일치해야 합니다. 루프의 각 반복 때마
다 반복 변수는 컬렉션 멤버의 현재 값을 가집니다. 일반적인 for 루프와 마찬가지로, 반복
변수는 for 문과 같은 블럭에서 선언되어 있어야 합니다.

배열 표현식은 1차원 혹은 다차원, 고정 길이, 동적 배열일 수 있습니다. 배열 요소들에 대한 탐색은
증가 방향으로 진행되므로, 배열의 가장 작은 인덱스 요소부터 시작해서 배열 크기 빼기 1로 끝납니
다. 다음의코드는1차원배열, 다차원배열, 동적배열에 대한 예를보여줍니다.

2.png

다음은 문자열 표현식에 대한 반복의 예입니다.

3.png

다음은 집합(set) 표현식에 대한 반복의 예입니다.

4.png

클래스나 인터페이스에서 for-in 루프를 사용하려면, 규정된 컬렉션 패턴을 구현해야 합니
다. 컬렉션 패턴을 구현하는 타입은 다음과 같은 특성을 가져야 합니다.

  - 해당 클래스 혹은 인터페이스는 퍼블릭 인스턴스 메소드 GetEnumerator()를 포함해야 합니다.
     GetEnumerator() 메소드는 클래스, 인터페이스나 레코드 타입을 리턴해야 합니다.

  - GetEnumerator()에 의해 리턴된 클래스, 인터페이스나 레코드는 퍼블릭 인스턴스 메소드
    MoveNext()를 가져야 합니다. MoveNext() 메소드는 부울 값을 리턴해야 합니다.

  - GetEnumerator()에 의해 리턴된 클래스, 인터페이스나 레코드는 퍼블릭 인스턴스 읽기 전용
     (read-only) 속성 Current를 가져야 합니다. Current 속성의 타입은 해당 컬렉션이 포함하는
     타입이어야 합니다.

GetEnumerator()에 의해 리턴된 열거자(enumerator) 타입이 IDisposable 인터페이스를
구현하는 경우, 컴파일러는 루프가 종료될 때 그 타입의 Dispose 메소드를 호출하게 됩니다.
다음의 코드는 델파이에서 열거형 컨테이너에 대해 반복을 하는 예제입니다.

5.png


다음의 클래스들과 그 자손 클래스들은 for-in 문법을 지원합니다.

 - TList
 - TCollection 
 - TStrings
 - TInterfaceList
 - TComponent
 - TMenuItem
 - TCustomActionList
 - TFields
 - TListItems
 - TTreeNodes
 - TToolBar


번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 17831
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 16189
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 18842
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 24414
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 25794
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 21153
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 41744
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 177044
183 윈도우10, 왜 그리고 어떻게 지원해야 할까요? 관리자 2019.09.04 432
182 이 달의 기술자료 - 2021년 01월 file 험프리 2020.12.24 431
181 [고객사례-모바일 앱, 델파이] CAW+ 키보드 - 중/일, 한자 입력 및 번역 앱 file 관리자 2020.02.17 431
180 [도서/PDF] 한 번에 개발하는 안드로이드&iOS 앱 with 델파이 2편 - 5장. 클라우드 서비스(BaaS)의 활용 관리자 2020.02.06 431
179 [제품 설치 방법] 엠바카데로 본사 서버 이슈로 인해 설치가 어려운 경우 이 방법을 활용하세요. 관리자 2019.07.31 431
178 [업데이트][패치][10.2.3] RAD 스튜디오 - iOS 11.3 패치 험프리 2018.05.09 430
177 델파이/C++ 프로그램 현대화 – 패스트리포트(FASTREPORT)를 활용해 윈도우 HIGH DPI 지원 버전으로 마이그레이션하기 관리자 2021.04.26 429
176 [10.4 시드니][업데이트 1] 새로운 TLightweightMREW 레코드 관리자 2020.09.10 429
175 멀티-플랫폼 앱 멋지게! 쉽게! 빠르게! 완성하기 - #3 바로 커스터마이징해서 빠르게 완성하기 file 험프리 2019.07.16 429
174 [UX Summit 요약] 감지와 응답: 지속적 파악을 통한 실제 결과를 더 좋게 하기 (Sense & Respond: Continuously Learning Our Way to Better Outcomes) 관리자 2020.12.02 428
173 [생산성] RAD 스튜디오, 델파이, C++빌더 단축키 표 관리자 2020.07.28 428
172 [마이그레이션] C++프로젝트 현대화하기 (다시보기-영문) 관리자 2019.04.18 426
171 새로운 VCL 윈도우 테마 - Lucky Point 관리자 2020.02.18 425
170 북마크, 탐색기 - 무료 IDE 애드온 기능들 업데이트! (10.4용) 관리자 2020.06.16 424
169 단 한 줄의 코드로 완성하는 C++ CUSTOMER/SALES 애플리케이션 관리자 2020.11.09 423
168 델파이 개발자를 위한 이더리움(Ethereum)! 관리자 2020.02.04 423
167 [마이그레이션] C++빌더 프로젝트 업데이트하기! 관리자 2020.09.17 422
166 TEMSDataSetResource 컴포넌트를 사용하여 RAD 서버의 마스터-디테일 데이터 구현하기 file 김원경 2020.03.06 422
165 [발표자료] 20171109 RAD스튜디오 100% 활용하기: 최신 기술 적용과 확장 관리자 2017.11.10 422
164 이 달의 기술자료 - 2018년 05월 file 험프리 2018.04.27 420