Miracole tstringlist

Object Pascal coroborat cu limbaj de asamblare, în forma sa actuală Delphi 5/6/7 oferă posibilități nelimitate pentru programarea zborului de gândire, iar acest articol, vom deschide o serie în care vom demonstra în mod constant acest lucru.







Începem cu o simplă, extrem de utilă, dar puțin cunoscută, cel puțin pentru începători, clasa Delphi standard TStringList. Acum vom vedea cum se rezolvă sarcinile tipice cu ajutorul acestei clase.

Pentru a începe, pe scurt, ceea ce aceste proprietăți remarcabile au obiecte ale acestei clase. TStringList - o clasă care este proiectat pentru a stoca o listă de siruri de caractere și o listă de obiecte cu o reprezentare textuală (la fel ca în 1C - l SpisokZnacheny). În plus, această listă pot fi sortate în ordine alfabetică sau prin intermediul unei funcții comparative scrise de programator. În plus, această listă poate fi interpretat ca lista de valori (Name = string). În plus, această listă pot fi salvate într-un fișier sau flux este convertit într-o linie continuă sau un șir de caractere separate prin virgulă. a primit fizic șir sau flux este un text simplu, în care rândurile sunt separate prin caractere CR / LF (Windows standard fișier text), și virgulă (CommaText, Excel). Ei bine, desigur, au capacitatea de a încărca o listă de șiruri de fișier de flux, siruri de caractere și șiruri, separate prin virgulă. De notat este special proprietatea remarcabilă de ambalaje un șir de caractere separate prin virgulă: linia inversă despachetarea întotdeauna restaurate la forma lor originală. Acest lucru înseamnă că mai multe șiruri de cuibărit admise separate prin virgulă, dând un mare câștig, atunci când ambalarea / despachetarea datelor structurale multi-dimensionale în format text, care este ceea ce vom demonstra în a doua problemă.

Deci, în primul rând, să aruncăm o privire asupra listei de șiruri de caractere ca o listă de obiecte cu o reprezentare textuală, deoarece în această cheie ar trebui să folosiți o listă de șiruri în aplicații reale. Ce este un obiect cu o reprezentare de text? Poate fi, de exemplu, o listă de mărfuri care au, pe lângă nume, și parametri suplimentari, cum ar fi unitățile de măsură, cantitățile în ambalaje și prețurile. Deci, avem predeterminarea tipurilor:







Setul de obiecte TTovar este o referință clasică a produselor omogene, de exemplu produse de panificație. Câmpul Greutate din clasa TEdIzm este necesar pentru a transfera o unitate în alta. Să ne întoarcem la rulouri. De exemplu, furnizorul "Karyakinsky Bakery" ne-a furnizat un fișier text care conținea informații despre noile sale produse și prețurile de vânzare sub forma unui fișier text:

Dacă îndeplinești această provocare cap-la (citita de linie, și parsarea fișierul text), precum și să le adăugați direct la listbox, aceasta va conduce la funcționarea ineficientă a computerului, troll lui (pe mașinile mai lent), și, în general, pentru a efectua modificări suplimentare ale codului este soluția nu este cea mai bună. Este mult mai eficient pentru a face un „urechi fentă“, și anume, pentru a crea TStringList, descărcați-l la fișierul original, creați o secundă TStringList, descărcați-l la mărfurile, le sorta, și în cele din urmă, alocați ListBox.Items de proprietate:

Rețineți că dacă scrieți o funcție de tipul TStringListSortCompare, puteți sorta nu numai reprezentarea textului, ci și orice alte caracteristici, de exemplu, prețul:

Ei bine, în cele din urmă, vom demonstra reacția la un dublu clic pe lista de produse care rezultă. Dând dublu clic, vom afișa prețul de vânzare al bunurilor:

Apropo, nu uitați să elibereze resursele de sistem ale obiectelor înainte de rânduri ștergând metode ListBox1.Items.Delete () / Clear () sau str.Delete () / Clear () (str: TStringList), dacă este necesar, precum și atunci când închiderea aplicației:

Este demn de remarcat faptul că, atunci când salvați sau încărcați o listă de șiruri care sunt atașate la obiectul șir nu sunt salvate sau restaurate în standardul TStringList, dar poate fi foarte frumos pentru a rezolva această problemă - a scrie un TStringList descendent cu procedurile redefinite GetTextStr și SetTextStr, în care să vină și să implementeze formatul lor de stocare proprii obiecte și reprezentarea lor textuală sub forma unui text continuu.

Deci, am văzut că TStringList vă permite să rezolvați o mare varietate de sarcini de la gruparea obiectelor cu reprezentarea textuală la procesarea simplă a listei valorilor variabilelor. Acum, să vedem cum vă permite această clasă să rezolvați problemele de ambalare / despachetare a datelor structurate complexe în formă de text și invers. Această sarcină apare adesea în sarcinile de comunicare, de exemplu, atunci când datele sunt transferate pe o rețea sau între modulele software.

Să presupunem că trebuie să executăm un program obrab.exe cu parametrul liniei de comandă, în care doriți să transferați produsul selectat din lista de mai sus. Să scriem pachetul și pachetul de date. Cu TStringList, această sarcină este programată în două secunde:







Articole similare

Trimiteți-le prietenilor: