Delphi pentru profesioniști. Listele și colecțiile
proprietatea Strings [Index: Integer]: șir citit Get write Put; implicit;
Pentru a lucra cu o proprietate, se folosesc metodele interne Get and Put. în care se folosește variabila internă FList.
TStringltem = înregistrare FString: șir;
TStringltemList = array [0..MaxListSize] de TStringltem;
Dimensiunea maximă a listei este limitată de o constantă
MaxListSize = Maxint Div 16;
a căror valoare, după calcule simple, va fi de 134 217 727. Astfel, este clar că lista șirurilor Delphi este teoretic finită, deși dimensiunea listei este mult mai des limitată de mărimea memoriei disponibile.
Accesul la un element individual al listei se poate face prin proprietatea șirurilor în acest fel:
Ambele metode sunt echivalente.
Cu o atribuire simplă, puteți seta noi valori numai atunci când elementul este deja creat. Pentru a adăuga un element nou, utilizați metodele Add și AddStrings.
funcția Add (const S: șir): Integer;
o listă adaugă noul element, atribuindu-i o valoare a lui și revenirea indicele noului element din listă.
adăugați procedura (const S: șir);
apelați doar funcția Adăugați. Singura diferență este că metoda nu returnează indexul elementului nou.
procedură AddStrings (Strings: TStrings);
adaugă la listă un set întreg de elemente noi care trebuie specificate de o altă listă trecută în parametrul de șiruri.
Dacă este necesar, puteți adăuga un element nou într-un loc arbitrar din listă. Pentru aceasta, metoda
introduceți procedura (index: intreg; const S: șir);
care inserează elementul s în locul elementului cu indexul indexului. În acest caz, toate aceste elemente sunt deplasate cu o poziție în jos.
Pentru a șterge un element de listă, utilizați
Procedură Ștergere (Index: Integer);
procedură Mutați (Curlndex, Newlndex: Integer);
mută elementul specificat de curindex. la o nouă poziție specificată de indexul Newlndex.
schimbul de proceduri (indexul, indexul 2: întreg);
elemente swap cu indexuri index1 și index2.
Destul de des în liste sunt plasate informațiile de linie de tipul următor:
Exemplele includ linii din fișierele INI sau registrul de sistem. În special pentru astfel de cazuri, lista prevede prezentarea șirurilor în două proprietăți. Proprietatea Nume conține textul înainte de semnul egal. Proprietatea valori conține textul după semnul de egalitate implicit. Cu toate acestea, puteți înlocui caracterul de delimitare cu orice alt caracter folosind proprietatea
proprietate NumeValueSeparator: Char;
Valorile proprietăților valorilor sunt accesate prin valoare. De exemplu, dacă există o linie în listă
atunci valoarea proprietății valorii este egală cu
În plus, valoarea proprietății valorii poate fi obținută dacă indicele său este cunoscut:
proprietate ValueFormlndex [Index: Integer]: șir;
proprietate Obiecte [Index: Integer]: TObject;
Proprietatea de elemente de caractere a elementului și proprietatea obiectelor obiectului asociat au aceleași indicii. Dacă șirul nu are un obiect asociat, atunci proprietatea obiectelor este Nil. Un obiect poate fi asociat cu mai multe rânduri din listă în același timp.
Cel mai adesea, sunt necesare obiecte pentru a stoca informații suplimentare pentru fiecare element. De exemplu, în lista de orașe pentru fiecare element, puteți să stocați suplimentar populația, zona, starea administrativă etc. Pentru a face acest lucru, puteți crea ceva similar:
Pentru a adăuga un obiect la rând din listă, utilizați metoda AddObject.
funcția AddObject (const S: șir; AObject: TObject): Integer; virtuale;
Rețineți că trebuie să treci un indicator la obiect în parametrul AObject. Cel mai simplu mod de a face acest lucru este: