Bruke TObjectList

Gjør livet enklere med TObjectListNew til Delphi 5 & 6 er det TObjectList. Som det navnet tilsier det er i stand til å lagre en liste over objekter! Nylig var jeg pålagt å sende inn en prøve søknad om jobb var jeg forfølge. En ting dette programmet gjorde var lov brukeren å slippe "Kommentar bokser" på et bilde. Disse kravene gjort TObjectList klasse en perfekt kandidat Tenk på dette endret: Fremgangsmåte TMainForm.AddString; Var MyStringList: TStringList, begynner MyStringList: = TStringList.Create; prøve MyStringList.Add ( 'blah'); MyStringList.Add ( 'blah2'); bortsett FreeAndNil (MyStringList); end, end, Denne prosedyren åpenbart introduserer en ganske alvorlig minnelekkasje! Bruke TObjectList kan redde oss hodepine av å bruke en standard tListe grunn av en fantastisk eiendom /paramter kalt "OwnsObjects" .Consider vår modifisert prosedyre: La oss begynne med å skape TObjectList når skjemaet er created.procedure TMainForm.FormCreate (Sender: TObject ), begynner FList: = TObjectList.Create (sann); //OwnsObjects er True.end, prosedyre TMainForm.AddString, Div MyStringList: TStringList, begynner MyStringList: = TStringList.Create; prøve MyStringList.Add ( 'blah'); MyStringList.Add ( 'blah2'); FList.Add (MyStringList); bortsett FreeAndNil (MyStringList); ende; end; Nå har vi ikke trenger å bekymre deg for minnelekkasje fordi når den viktigste formen er ødelagt har vi følgende kode: prosedyre TMainForm.FormDestroy (Sender: TObject); begynne FList.Free; end; TObjectList lar deg legge til et objekt av en hvilken som helst snill mot det som betyr at det er påkrevet å være generisk. La oss ta en titt på .Legg metoden i TObjectList selv: funksjon TObjectList.Add (AObject: TObject): Integer; begynne Resultat: = arvet Legg til (AObject); end; Legg merke til parametertype er TObject og som enhver god Delphi programmerer bør vite TObject er den absolutte utgangspunkt for noen klasse i Delphi VCL. Ved haveing ​​en parameter av TObject kan du passere noe inn på listen !! Det er en ulempe imidlertid. Referanse elementet i listen får du bare en "TObject". For å ta et element i listen din noen type casting er påkrevd. Kanskje vi trenger å finne strengen i listen med tekst som inneholder: "blah". Tydeligvis TObject har ikke en egenskap av tekst, så vi må gjøre noen typecasting.procedure FindText; Var jeg: Integer; begynne for i: = 0 til FList.Count - en gjøre hvis TStringList (FList.Items [i] ) [0] = 'blah' så hvis TStringList (FList.Items [i]) Text = 'blah' deretter ShowMessage (TStringList (FList.Items [i].) Tekst).; end, end, legge til mer enn én type klasse til samme ObjectList er også en mulighet! Du kan ringe TObjectLists metode tittelen: FindInstanceOf.Here den fantastiske verktøy kalt "Class Reference" kommer i hendig. Pass i referanse til klassen din type og FindInstanceOf vil returnere indeksverdi på hvor i listen elementet er plassert: FList.FindInstanceOf (TStringList, Sann, 0); Dette avslutter FindObject leksjon og jeg håper dere ser det er verdi og jeg håper denne artikkelen var til hjelp! Eric "DelphiDev" Brown



Previous:
Next Page: