Dynamic array delfi

Unul dintre cele mai puternice instrumente ale limbajului Delphi este considerat a fi dinamică. Principala lor diferență față de matricele convenționale este că acestea sunt stocate în memorie dinamică.







1. În primul rând, rețelele dinamice ale Delphi, după cum se știe, nu au dimensiunea lor fixă. Pentru a declara o matrice similară trebuie să scrieți:

Nu uitați de lungimea matricei Delphi. limbajul trece lungimea matricei ca parametru ascuns al subrutinei, acest fapt nu trebuie uitat!

O matrice deschisă poate fi de asemenea definită printr-o valoare constantă. Ei numesc aceasta o varietate de matrice (deschise) - aceasta este întotdeauna utilizată pentru a permite transferul unui număr variabil de valori de argument pentru o subrutină.

2. Pentru a aloca memoria unei matrice dinamice, Delphi utilizează de obicei procedura FindLeft:


După apelarea la această procedură va aloca imediat memorie pentru douăzeci de elemente de matrice, care vor fi apoi indexate 0-19 (este merită atenția asupra faptului că indexarea începe de la 0, mai degrabă decât una cât mai mulți oameni cred!).







Apoi puteți lucra în siguranță cu o matrice dinamică - îi puteți atribui valorile necesare, efectua calcule diferite cu elementele, le imprimați și așa mai departe.

3. Imediat după matrice dinamic Delphi este alocat, va fi capabil să treacă o serie de caracteristici standard Nigh, Low, și sizeof Lungime Caracteristică Lungime returnează numărul de elemente într-o matrice complet dinamic, Nigh se întoarce la locul de cel mai mare indice în matrice (lungime - 1) , Valoarea redusă revine la zero.

4. Accesul la datele cu caracter personal de matrice dinamice folosind proceduri de nivel scăzut, cum ar fi readfile sau WriteFile sau alte rutine similare, care accesează imediat la întreaga matrice se realizează de obicei incorect. Pentru un tablou obișnuit (adesea numit, de asemenea, matrice statică - care este opusul unei matrice dinamic) variabilă de matrice este egal cu el.

Pentru matrice dinamic Delphi este absolut nu este cazul - o variabilă într-o gamă dinamică este întotdeauna un pointer. Deci, dacă v-ați decis pentru a obține acces la matrice dinamice de date corecte - nu utilizează variabila în sine în această matrice, și este mai bine să se folosească în loc de primul ei element al matrice.

5. Pentru un exemplu, luați în considerare alocarea de rețele dinamice Delphi unul altuia







Articole similare

Trimiteți-le prietenilor: