Delphi 2010에서는 모든 종류의 인덱스 된 속성 (예 : TPageControl의 페이지)을 반복 할 수있는 방법이 있습니까?Delphi 2010에서 인덱스 된 속성을 반복합니다.
답변
아니,이 표준 패턴이없는 한, 수 없습니다 왜 어떤 클래스에는 열거 자 (enumerator)가 있습니다 : for ... in 문에 열거 방법을 알려주는 패턴입니다.
- 대부분의 시간 인덱스가 정수
- 대부분의 시간 인덱스가 알려주는 속성 Count 또는 길이가 제로
- 대부분의 시간에서 시작입니다 :
당신이 그러나 할 수있는 것은 최선의 추정치입니다 (기본 유형의 레코드 인 경우 또는 기록 헬퍼) 어떻게 마지막으로 종료 값
를 얻기 위해, 그것은 "retrofit" TPageControl with a GetEnumertor using class helpers 가능하다.
나는 인터넷에서 검색하면서이 게시물에 대한 답을 찾기 위해 귀하의 게시물 (좋은 물건)을 보았습니다. 제 경우에는 다른 구성 요소의 색인 된 속성이 6 개 있습니다 . "캡션"속성을 얻기 위해 반복합니다. 그래서, 지금, 거의 동일한 루프가 여섯 개 있습니다. 나는 그것을 좋아하지 않습니다. GetEnumerator는 멋지지만, 그처럼 작은 문제에 대해서는 너무 많은 코드입니다. –
이러한 루프를 일반 코드로 추상화 한 다음 동일하지 않은 코드가 포함 된 익명 메소드를 전달하는 방법은 무엇입니까? –
정확하게 이해했다면 속성과 해당 인덱스 값에 대해 알지 못해도 RTTI를 통해 이러한 속성을 반복하고 싶습니다. 유효한 인덱스 값은 정수 값 시퀀스가 아니어야하므로 가능하지 않습니다. 문자열 인덱스 또는 객체 참조와 함께 인덱스 값으로 속성이있을 수 있습니다. 또한 RTTI에는 반복에 사용할 수있는 유효한 인덱스 값을 쿼리하는 메커니즘이 없습니다.
- 는
- 는
사용자들은 사용하는 인덱스의 시작과 끝 값을 지정하는 인덱스 유형을 지정합니다 :
@TLame'ActivePageIndex'는 색인 된 속성이 아닙니다. –
나는 당신의 코멘트를 이해하지 못했다. 그런데 꽤 공격적이다 ... 나는 ActivePageIndex에 대해 아무 말도하지 않았는데, 나는 당신이 그것을 본 곳을 모른다. 나는 페이지를 말했다. –
나는 당신이 삭제 된 코멘트를 언급하고 있다고 추정한다. –