Kan dit?
Delphi Code:
type tfoo = record foo1 : string; foo2 : integer; end; var foo : Tdictionary(<string>,<tfoo>);
Kan dit?
Delphi Code:
type tfoo = record foo1 : string; foo2 : integer; end; var foo : Tdictionary(<string>,<tfoo>);
Delphi is great. Lazarus is more powerfull
Tdictionary<string,tfoo>;
maar dat gaat ja. Of het doet wat je wilt is iets anders. Er wordt namelijk van records een binary hash berekend. dus over de pointer waarde van de string. Als je dat niet wilt moet je een of ander comperator interface implementeren iirc.
Een beetje neuzen in generics.collections source en je komt er wel uit (zit ff achter een bak zonder delphi, kan dus niet makkelijk nazien).
Tss, ik slaag er tot nu toe nog altijd in alles zonder generics te doen in het dagelijks leven. Ik begin oud te worden, duidelijk van de vorige generatie. Dat gezegd zijnde, het ouderwetste antwoord op je vraag is gou'e ou'e TStringList en meer bepaald de Objects array property, en de AddObject method. Als je Sorted:=true en Duplicates:=dupIgnore zet, dan krijg je zo gratis een behoorlijk degelijke key-lookup cadeau.
Wel, hoe "gratis" dat is merk je wel als je 1000000 random strings in zo'n sorted Tstringlist stopt.
Natuurlijk kan het met een tstringlist (bijna) ook (volgens mij geen records). Maar wat je zegt, je moet met de tijd mee. Ik zie Tdictinary dan ook als een advanced TStringlist
Delphi is great. Lazarus is more powerfull
Je kan prima een Record toevoegen met AddObject in een TStringList. Als Pointer.
Ik bedoel dat je er 'gratis' een implementatie van a/b-zoekalgoritme bij krijgt. Het zoeken zelf is not altijd O(log n) natuurlijk
Het is niet aan te raden. Nu kan het zijn dat ik gebruik moest maken van packed record.
Tijdens het vullen van de TDictionary ging het allemaal wel goed. Maar toen moest ik de gevonden data verwerken in een dataset en gooide mijn integers door elkaar heen. Record vervangen door class en alles klopt.
Delphi is great. Lazarus is more powerfull
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks