Adăugarea de paranteze la apelarea procedurilor și funcțiilor fără parametri nu mai este o noutate în Delphi, a pus Cu toate acestea, această posibilitate este puțin cunoscută. Această oportunitate va aprecia acei programatori care trebuie să lucreze în două limbi (C ++, și Delphi), deoarece acestea nu trebuie să fie în permanență conștienți de diferențele în sintaxa procedurilor de apel și funcții în diferite limbi. Delphi In ambele variante, următoarele sunt considerate valabile.
Pentru prima dată conceptul de funcții și proceduri de suprasarcină a fost pus în aplicare în Delphi4. Acesta vă permite să aveți mai multe proceduri și funcții diferite, cu același nume, dar cu diferite liste de parametri. Astfel de proceduri și funcții sunt descrise utilizând directiva de suprasarcină.
Atunci când procedura de testare se numește, Delphi va decide care dintre cele trei proceduri pentru a efectua, în funcție de parametrul trecut la ea. Dar trebuie remarcat faptul că acest lucru nu este caracteristica limba cea mai sigură. Utilizarea unor proceduri și funcții supraîncărcate pot deveni o sursă inepuizabilă de bug-uri subtile în program. Deci, utilizați cu atenție această oportunitate.
Pascal vă permite să treci parametrii la funcții și proceduri, fie prin valoare sau prin referință. parametru de transfer poate fi de orice încorporat sau tip definit de utilizator sau să fie o matrice deschisă. Parametrul poate fi, de asemenea, o constantă, în cazul în care valoarea în procedura sau funcția nu se schimbă.
Transmiterea parametrilor semnificativ
Acest mod parametru de trecere este implicit. În cazul în care parametrul a trecut de valoare, o copie locală a acestei variabile, care este disponibil pentru procesarea unei proceduri sau funcții. Uită-te la următorul exemplu:
Când se apelează la această procedură creează o copie a TRANSMITE ca parametru de rând s, care va funcționa Procedura de testare. În acest caz, toate modificările aduse liniei nu va afecta variabila inițială s.
Cu toate acestea, acest lucru nu se aplică în cazul obiectelor. De exemplu, în cazul în care o variabilă este transmisă funcției (sau mai degrabă instanța obiect) Cu TStringList, în acest caz, link-ul va transfera (chiar dacă nu este menționat în mod explicit).
Se trece prin parametrii de referință
Pascal, de asemenea, vă permite să treci parametri la o funcție sau procedură, link-ul - astfel de opțiuni sunt numite parametri variabili. Transmiterea parametrilor prin referință înseamnă că funcția sau procedura se poate modifica setările primite. Pentru a trece parametrii la link-ul, utilizați cuvântul cheie var. adăugat la lista parametrilor numita procedură sau funcție.
Transferul parametrilor Constantele
Transfer Deschideți Array
Deschideți parametrii matrice vă permite să transferați la o funcție diferită sau un număr de parametri la procedura. Ca parametri pot fi transmise fie elementele de matrice deschise de același tip sau de tipuri diferite de constante matrice. Următorul exemplu este declarată caracteristică, care, ca un parametru care urmează să fie transmis matrice deschisă de numere întregi.
Într-o matrice deschisă, puteți transmite variabile, constante sau expresii ale constantelor. Următorul este un exemplu care arată AddEmUp funcție de apel transferat la un număr de elemente diferite.
Pentru a obține informații despre parametrii matrice de fapt, transmise în funcție sau procedură poate fi utilizată funcția de mare, Low și sizeof. Pentru a ilustra utilizarea lor următoarele este textul funcției AddEmUp care returnează suma tuturor elementelor din matrice a trecut să-l A.
Apelați funcția poate fi declarată mai sus, de exemplu, printr-o astfel de declarație:
Când funcția de transfer sau constantelor proceduri matrice toți parametrii transmise implicit compilator convertește un tip TVarRec. TVarRec tip de date este declarat în unitatea de sistem, după cum urmează:
câmp VType definește tipul de date de înregistrare TVarRec conținute în acest caz și poate lua una dintre valorile date mai jos.
Deoarece matricea constantelor poate transmite date de diferite tipuri, aceasta poate provoca unele dificultăți în timp ce crearea parametrilor de procesare a funcției sau procedură obținute. În WhatHaveIGot consideră procedura de implementare care scanează parametrii elementelor de matrice obținute și le scoate ca un exemplu de tipul cu o astfel de matrice.
setări prestabilite
În al doilea caz, numai puteți seta valoarea parametrului s, i un parametru utiliza valoarea implicită:
Când se utilizează valorile implicite ale parametrilor ar trebui să fie conștienți de mai multe dintre următoarele reguli.
- Parametrii cu valori implicite trebuie să fie plasate la sfârșitul listei de parametri. Parametru fără valoare implicită nu trebuie să apară în listă după parametrul care are o valoare prestabilită.
- Valorile implicite pot fi atribuite numai la parametrii de tipuri convenționale, semne sau seturi.
- Valoarea implicită poate fi transmise numai prin valoare sau cu const modificator. Nu poate fi o referință sau un parametru netipizat.
Directiva interzice funcțiile de apelare, cum ar fi tratamente (ignorând rezultatele retur). În mod implicit, acest mod este pornit (). Acum, amintiți-vă, utilizarea Rezultatul este inacceptabilă atunci când un pavilion de resetare a extins opțiunea de sintaxă situată în fila compilatoare de opțiuni de proiect, sau prin specificarea directivelor compilator.
Fiecare limbă Objecl Pascal dispune există o variabilă locală numită Rezultatul, conceput pentru a găzdui valoarea de returnare. În plus, valoarea returnată a funcției poate fi, de asemenea, prin atribuirea unei valori la o variabilă care are același nume ca și funcția. Aceasta este o sintaxă Pascal standard păstrat din versiunile sale anterioare. Atunci când este utilizat în corpul funcției variabilei numelui său, nu uitați că există mari diferențe în manipularea denumirii - totul depinde de locul în care se află - în partea stângă a unui operator de atribuire sau orice alt loc al funcției de text. Dacă apare numele funcției pe partea stângă a unui operator de atribuire se presupune a fi atribuită valoarea returnată a funcției. În toate celelalte cazuri, se presupune că a efectuat un apel recursiv al funcției.