[Delphi 7] Enumeracja tablicy

0

Witam,

jak w Delphi 7 enumerować listę, która jest indeksowana za pomocą stringa? Z tego co się naszukałem to w nowszych wersjach delphi można zastosować pętlę for ... in ... do ale nie mogę nic wymyślić jakby to można zrobić w D7.

0

A co to jest za lista, jakiego typu?

0

w jakim sensie lista jest indeksowana za pomoca stringa ?

Mozesz pokazac kawalek kodu ?

0

interfejs tej listy jest zadeklarowany w ten sposób:

PointList = interface(IDispatch)
    procedure Add(const PointToAdd: PIPoint); safecall;
    property Count: Integer read Get_Count;
    property Item[var Index: string]: PIPoint read Get_Item; default;
    ...
  end;

i odwołać się mogę do konkretnego obiektu tylko po jego indeksie, który jest stringiem - czyli w taki sposób

myPoints.item['jakasnazwa'].value;
myPoints.item['inna_nieznana_nazwa'].value;

itd.

0

jeśli nie indeksujesz jej typem wyliczeniowym (byte, int, char, enum) to se ne da - musisz dodać indekser

0

oczywiscie - gdyby to byla tablica dynamiczna - mozna zrobic for Low(tablica) to High(tablica) - ale to i tak z automatu odwoluje sie do wewnetrznego indeksu elementow.

generalnie nie spotkalem sie z konstrukcja (mowa o natywnym mechanizmie Delphi, a nie klasie, czy innej konstrukcji "wyzszego rzedu"), ktora pozwalalaby sie odwolywac do elementow listy bezposrednio po nazwie elementu.

Oczywiscie - moge byc na to za glupi.

Owszem - spotkalem sie z czyms takim w SQL - to znaczy tam klucz glowny oparty na konkretnym, unikalnym polu jest rzecza normalna, ale w Delphi - nie widze takiego mechanizmu.

0

Jeśli możesz mieć wpływ na tę klasę, to dodaj po prostu numerowanie po indeksie. Zresztą żeby działało for..in z nowszych Delphi dla twojej klasy, i tak musiałbyś coś tego typu zadeklarować.

0

Po długich poszukiwaniach znalazłem działające rozwiązanie. Opis zamieściłem w gotowcach Implementacja Foreach

1 użytkowników online, w tym zalogowanych: 0, gości: 1