Cel mai important avantaj al creării componentelor dinamice este posibilitatea de depanare folosind facilitățile de depanare Delphi. Această secțiune descrie pe scurt tehnicile de bază pentru lucrul cu depanatorul.
Pentru a lucra cu programul de depanare încorporat, programul trebuie să fie compilat cu casetele de selectare din grupul Debugging din fila Compilator din fereastra deschisă de comanda Project ► Options.
Pentru a seta un punct de întrerupere necondiționat, plasați cursorul de text în linia dorită și apăsați F5 - linia va fi evidențiată cu o culoare (roșu în mod implicit). Apăsarea repetată a tastei F5 șterge punctul de întrerupere. De asemenea, puteți să creați-eliminați un breakpoint făcând clic pe câmpul de servicii din stânga liniei. Punctul de întrerupere creat în acest mod întrerupe execuția programului și transmite controlul către mediul Delphi înainte de executarea instrucțiunii de program de pe linia respectivă.
Punctul de întrerupere poate fi condiționat. Pentru a face acest lucru, utilizați o fereastră numită Vedere ► Debug Windows ► Puncte de blocare sau Ctrl + Alt + B. Această fereastră conține liste de puncte de întrerupere create în program. Selectați una care ar trebui să devină condiționată și apăsați Enter - fereastra prezentată în Fig. 10.3.
Fig. 10.3. Fereastră pentru gestionarea proprietăților punctului de întrerupere
În câmpul Condition al ferestrei, introduceți o expresie condiționată cu variabilele programului și (sau) proprietățile componentelor, de exemplu:
(Progress> 45) și (Progress <55) Точка останова прервет выполнение программы только при истинности условного выражения. В поле Pass count окна можно указать количество проходов точки останова до момента ее срабатывания.
În cele mai recente versiuni de Delphi breakpoints pot fi grupate împreună. Pentru aceasta, introduceți ID-ul grupului în câmpul Grup și în câmpurile Activați grupul și Dezactivați grupul, identificatorii pentru grupurile care sunt permise și respinse, respectiv.
În unele părți ale programului, nu pot fi stabilite puncte de întrerupere. Acest lucru se aplică acelor fragmente care sunt asociate cu desenul componentei: desenul întrerupt va relua din nou după ieșirea punctului de întrerupere, care va funcționa din nou și așa mai departe până când acesta va fi eliminat. În aceste situații, puteți utiliza câmpurile Mesaj log și expresie Eval; puneți primul șir de text arbitrar, în al doilea - o expresie arbitrară și aruncați caseta de selectare Break. Punctul nu va întrerupe execuția programului, dar va plasa mesajul dvs. și valoarea expresiei calculate într-un jurnal de depanare special, la care puteți vedea după executarea programului cu comanda View ► Debug Windows ► Event Log sau Ctrl + Alt + V.
Urmărirea programului înseamnă executarea pas cu pas a instrucțiunilor codului sursă al programului după declanșarea punctului de întrerupere. Pentru urmărire, utilizați tastele F7 și F8. Apăsând tasta F7 se execută instrucțiunile din linia curentă a textului programului. Dacă există operatori de apel subrutina în șir, linia curentă este prima linie a primei subrutine numite, altfel următoarea linie de cod. Când apăsați tasta F8, același lucru se întâmplă, dar munca subrutinelor numite nu este urmărită.
Nu puneți mai mulți operatori în aceeași linie de cod - acest lucru va face dificilă urmărirea programului.
Obținerea valorilor variabilelor și expresiilor
După declanșarea punctului de întrerupere și (sau) în timpul urmăririi programului, puteți vedea valorile variabilelor sau expresiilor cu acestea. Pentru aceasta, atunci când lucrați cu cele mai recente versiuni ale Delphi, deplasați cursorul mouse-ului la identificatorul variabilei din codul programului - valoarea variabilei va apărea în fereastra de prompt.
SFATURI: fereastra de cod în timpul traseului nu ascunde fereastra Watch List, "apropie" ultima față de marginea de jos a ferestrei de cod. Rețineți că ancorarea va avea succes numai dacă fereastra de cod nu este complet extinsă.
Modulul de sistem al celor mai recente versiuni ale Delphi (începând cu versiunea 3) include procedura de depanare Assert, care are următorul prototip:
Este nevoie de parametru expresia logică expr și, posibil, o șir de text text msg. Procedura evaluează expresia și, dacă valoarea sa este False, ridică o excepție EAssertionFailed. În fereastra care va fi creată, mesajul msg va fi afișat și, dacă este omis, mesajul standard va fi afișat. În plus, se afișează o cale completă către fișierul sursă și numărul liniei în care se ridică excepția.
Această procedură este un instrument util pentru depanare, deoarece executarea acesteia poate fi dezactivată sau rezolvată folosind directiva globală de compilatoare. Același efect se obține prin setarea-resetarea casetei de verificare Aserțiuni din fila Compilator a ferestrei deschise de comanda Proiect ► Opțiuni.