2013-02-15 15 views
5

Zastanawiałem się, czy istnieje sposób, w jaki mogę zrobić zestaw rekordów w paskach. Szukam w Internecie i wierzę, że to niemożliwe.Zestaw rekordów w pascal

type  
    TRecord = record 
    StrField: string; 
    IntField: Integer; 
    end; 

    TSetOfRecord = set of TRecord;   
+1

Podstawowy typ zestawu w paskach jest porządkowy. –

+0

Zadaj sobie pytanie, jak duży byłby zestaw wszystkich możliwych ciągów. –

Odpowiedz

5

Tak, to niemożliwe, aby ustawione elementy musiały być typu porządkowego. O ile pamiętam, możesz mieć tylko ograniczoną liczbę członków, a także 255 dzwonków.

Wygląda na to, że jest o wiele więcej kombinacji niż w twoim rekordzie, chociaż nie jest jasne, co definiuje wyjątkowość dla członka.

+1

256 to ograniczenie implementacyjne, aczkolwiek powszechne. –

+1

Ciągle używaj dużo w starym kodzie delphi, jest to często schludny opis tego, co zrobiłbyś z flagami enum. Byłem trochę rozczarowany chłopcami z C#, kiedy tego nie robili. –

1

"Zestaw rekordów" nie ma sensu. Myślę, że masz na myśli "zbiór rekordów". Jeśli tak jest, możesz wdrożyć go na więcej sposobów niż jeden.

Ten, który polecam, to użycie "otwartych tablic" (nie takich samych, jak "tablice dynamiczne").

trzeba by napisać kilka własnych procedur, jedna jest w ten sposób:

function RecordInCollection(const ARecord: TYourRecord; const ACollection: array of TYourRecord): Boolean; 
var 
    Index1: Integer; 
begin 
    Result := False; 
    for Index1 := Low(ACollection) to High(ACollection) do begin 
    Result := (ACollection[Index1].StrField = ARecord.StrField) and (ACollection[Index1].IntField = ARecord.IntField); 
    if Result then Exit; 
    end; 
end; 

i nazwać tak:

RecordInCollection (RECORD1 [RECORD2, Record3, Record4])

lub możesz użyć wcześniej zadeklarowanych stałych tablic zamiast [Record2, Record3, Record4].

+1

Zestaw rekordów ma sens. Podobnie jak w nieuporządkowanej kolekcji unikalnych członków. –

Powiązane problemy