2011-10-31 16 views
5

W Delphi 2010 istnieje sposób na iterację poprzez wszelkiego rodzaju indeksowane właściwości (na przykład Strony TPageControl, na przykład)?Powtórzenie przez indeksowaną właściwość w Delphi 2010

+1

@TLame 'ActivePageIndex' nie jest własnością indeksowaną. –

+0

Nie zrozumiałem twojego komentarza, dość obraźliwego przy okazji ... Nie powiedziałem nic o ActivePageIndex, nie wiem gdzie to zobaczyłeś. Powiedziałem Strony. –

+0

Przypuszczam, że odnosisz się do usuniętych komentarzy –

Odpowiedz

1

Nie, to nie jest możliwe, ponieważ nie ma standardowy wzór, który:

  • określa typ indeksu
  • określa początkowe i końcowe wartości indeksu użyć

To dlaczego niektóre klasy mają moduły wyliczające: jest to wzorzec, który mówi ... jak to wyliczyć.

Co można zrobić, jednak jest to najlepsze oszacowanie:

  • większość czasu indeks jest całkowite
  • większość czasu indeks zaczyna się od zera
  • większość czasu jest hrabia nieruchomości lub długość, która mówi jak uzyskać wartość końcową:

Wreszcie możliwe jest "retrofit" TPageControl with a GetEnumertor using class helpers (lub nagrywanie pomocników, jeśli typem bazowym jest rekord).

+0

Widziałem twój post (dobre rzeczy) podczas gdy szukałem w Internecie, próbując znaleźć odpowiedź na to :) W moim przypadku mam pół tuzina indeksowanych właściwości różnych komponentów . Przeszukuję je, aby uzyskać właściwość "Podpis". Tak więc, teraz mam pół tuzina prawie identycznych pętli i nie podoba mi się to. Chociaż sprawa GetEnumerator jest fajna, to za dużo kodu na tak mały problem. –

+1

Co powiesz na zamknięcie tych pętli w jakiś ogólny kod, a następnie przekażesz do niego anonimową metodę, która zawiera nieidentyczny kod? –

2

Jeśli dobrze Cię rozumiem, chcesz przetestować te właściwości za pomocą RTTI, nie wiedząc nic o właściwości i jej wartościach indeksu. Ponieważ prawidłowe wartości indeksu nie mogą być ciągiem całkowitych wartości, nie jest to możliwe. Mogą istnieć właściwości z ciągami-indeksami lub z odwołaniami do obiektów jako wartością indeksu. W RTTI nie ma mechanizmu służącego do sprawdzania poprawnych wartości indeksu, które można wykorzystać do iteracji.

Powiązane problemy