|
Pentru a putea vizualiza elementele programului,utilizati butonul Step
|
səhifə | 11/17 | tarix | 17.03.2018 | ölçüsü | 1,41 Mb. | | #45490 |
| Pentru a putea vizualiza elementele programului,utilizati butonul Step
Into daca doriti sa va deplasati in program pasa cu pas,sau Step Out,daca
doriti sa avansati mai rapid.Apoi apasati butonul Locals Window si obser-
vati ce elemente sunt vizibile in program in momentul respectiv si ce
valoare de moment este atribuita elementului respectiv.
EXEMPLU: din meniul Tools alegeti Debugger,apoi din File alegeti Open
si deschideti fila Samples/Tastrade/Progs/Main.prg
Apoi apasati butonul Step Out.Se va deschide automat fereastra de salut
a programului Tasmanian Traders.Cautati in bara de jos a programului Win-
dows fila Visual Foxpro Debugger si redeschideti fila cu un click.Obser-
vati ca programul a fost derulat pana aproape de sfarsit.Apasati butonul
Locals Window si se va deschide fereastra Locals:
fereastra contine o serie de variabile si directorul "loform" cu un
semn + in indicatorul de nod.Executati un click pe semnul plus.
Loform este un obiect complex.Explorati in continuare ce contine acest
obiect,cum sunt compartimentate datele,ce tip au si ce valoare,etc.
Fereastra Locals este un instrument complex,care va permite o vedere de
ansablu a programului,modulului sau obiectului investigat.Aceasta fereas-
tra nu este indicata pentru a corecta erorile de sintaxa,ci mai degraba
este utila pentru a putea identifica greselile de conceptie (Exemplu: doua
sau mai multe variabile declarate PUBLIC,returneaza valori care se anulea-
za reciproc,sau se face apel la o variabila declarata LOCAL,care nu are
vizibilitate in mediul de operare al procedurii respective,etc.).
-67-
PROJECT MANAGER -fereastra Project Manager este un instrument conceput
pentru a facilita organizarea filelor sub forma de proiecte.Practic,reali-
zeaza o interfata vizuala intre mediul de programare si programator.Cu
ajutorul acestui instrument,programatorul poate structura filele,docu-
mentele si tabelele de date astfel incat sa poata fi salvate intr-o sin-
gura fila cu extensia .PJX.Pentru a modifica un proiect,este suficient sa
deschideti fila cu extensia .PJX in fereastra Project Manager.
In fereastra Project Manager,elementele proiectului sunt grupate cu
ajutorul unui meniu in: Data,Documents,Classes,Code,Other si All(toate).
Pentru a lucra doar cu un anumit fel de elemente alegeti meniul corespun-
zator.Elementele sunt grupate sub forma de arbore de directoare.Daca un
director contine file auxiliare,punctul de nod va fi simbolizat cu un
semn plus.Executati un click de mouse pe semnul "+" pentru a vedea ce
contine directorul respectiv.Fereastra poate fi redusa si la o bara de
meniu,cu ajutorul butonului cu sageata.
In functie de elementele din proiect,fereastra afiseaza si urmatoarele
butoane de comenzi: New,Add,Modify,Browse,Close,Open,Remove,Build,Preview
si Run.Fiecare buton executa comanda inscrisa,asupra filei selectate.
Fereastra Project Manager a fost exemplificata destul de explicit in
paginile anterioare (vezi elementele unui proiect).
PROPERTIES - fereastra Properties se poate utiliza pentru elemente de tip
form (fereastra),data enviroment (mediul de memorie),cursor,relation (re-
latia dintre doua tabele) sau control (obiect).Fereastra properties reali-
zeaza o interfata vizuala in care programatorul poate seta sau redefini o
proprietate,o metoda sau un eveniment.Toate aceste operatii se pot efectua
si programatic,cu ajutorul unor comenzi organizate sub forma de linii de
cod,dar fereastra Properties ofera avantajul unei vederi de ansamblu a
tuturor proprietatilor,metodelor si evenimentelor elementului respectiv.
In fereastra apar si proprietatile sau metodele asupra carora nu se vor
efectua modificari.Fereastra se poate utiliza si pentru a vedea daca mai
multe elemente au proprietati comune.Pentru acest scop se vor selecta si-
multan mai multe obiecte (fereastra va afisa doar proprietatile comune).
Fereastra Properties se poate deschide din meniul short-cut afisat la
un click drept de mouse pe elementul interesat.In fereastra se disting
urmatoarele componente: o caseta de dialog in care se afiseaza elementul
selectat,un meniu cu urmatoarele optiuni: All,Data,Methods,Layout,Other,
o caseta de dialog pentru setarea sau actualizarea datelor si o lista
completa a proprietatilor fiecarui element.Caseta de dialog utilizata
pentru editare are la randul sau patru butoane: un buton cu un semn x,
utilizat pentru a anula o setare gresita,un buton cu o pipa,care confirma
setarea sau actualizarea efectuata,un buton cu simbolul "fx" pentru edi-
tarea unor expresii formate din elemente standard,si un buton cu trei
puncte ce poate fi utilizat pentru navigare (pentru a seta calea de acces
la o anumita fila).
Fereastra Properties nu poate fi utilizata decat pentru setarea unor
proprietati in etapa de design a proiectului.Valorile setate vor fi actu-
ale in momentul in care incepe executia programului.Pentru a schimba pro-
prietatile in timpul executiei,este necesar sa utilizati comenzi si linii
de cod (intr-o fila program,sau intr-un eveniment al unui obiect,etc.).
Fereastra Properties este asemanatoare cu Object Inspector din Delphi.
-68-
TRACE -fereastra Trace Window este instrumentul standard pentru depa-
narea asistata si rapida a unui program.Este inclusa in fereastra Debugger
si este fereastra implicita a acestui instrument.Se utilizeaza pentru a
deschide o fila de tip program si a urmari liniile de cod in timpul exe-
cutiei programului.Cu ajutorul acestei ferestre,se poate localiza o even-
tuala eroare,sau se poate estima modul de lucru al programului,la nivel
de cod.In fereastra Trace se pot evalua si eventualele "optimizari" sau
solutii tehnice la nivel de cod.
Pentru ca fereastra sa fie cu adevarat utila,este necesar ca executia
programului sa poata fi intrerupta in anumite puncte,pentru ca programa-
torul sa poata evalua situatia de moment.Pentru acest scop,se vor fixa
un numar oarecare de "nivele de intrerupere",apoi programul va fi execu-
tat fragmentat,de la un nivel de intrerupere la urmatorul.In fiecare
punct in care programul a fost intrerupt se vor evalua valorile dorite,
pana cand se identifica fragmentul in care a intervenit eventuala eroare.
Apoi,fragmentul respectiv va fi verificat linie cu linie,pana cand se
identifica locatia exacta a erorii.Pentru a realiza astfel de nivele de
intrerupere,se pot utiliza mai multe procedee tehnice.O varianta este sa
alegeti din meniul Tools,optiunea Breakpoints si sa fixti un anumit numar
de linii din program unde doriti sa opriti executia.
EXEMPLU : pentru a opri executia dupa afisarea unei ferestre:
in fereastra Breakpoints introduceti in caseta Location linia de cod:
frmMyFrame.Show
si in caseta File numele programului in care se gaseste linia de cod:
C:\vfp\exemple\clasamea.prg (utilizati butonul cu trei puncte)
Apoi apasati butonul ADD.
In caseta Breakpoints va aparea nivelul de intrerupere:
at "frmMyFrame.show{clasamea.prg}"
Fiecare nivel de intrerupere are si o caseta checkpoint in care puteti
bifa daca doriti ca nivelul de intrerupere sa fie activ sau pasiv.
In continuare executati programul cu Step Out.
O modalitate mai simpla este sa deplasati direct cursorul la pozitia la
care doriti sa intrerupeti executia programului si sa utilizati butonul
Run to cursor.Executia se va opri automat la pozitia cursorului iar in
caseta Breakpoints se va adauga automat nivelul de intrerupere respectiv.
In continuare puteti utiliza nivelul de intrerupere si cu Step Out,ori
de cate ori reincarcati programul.Pentru a elimina un nivel de intrerupere
utilizati butonul Remove din fereastra Breakpoints,iar pentru a pastra
nivelul de intrerupere,dar inactiv,utilizati butonul Disable.Ulterior,se
va putea reactiva un nivel de intrerupere cu butonul Enable.
Dupa ce eroarea a fost localizata la un grup de coduri,puteti utiliza
butonul Step Into,pentru a naviga linie cu linie,pana cand depistati eroa-
rea.La orice nivel de executie,nu ezitati sa deschideti si celelalte fe-
restre de depanare: Locals,Call Stack sau Output si Watch,pentru a putea
avea o imagine de ansamblu a modului de executie.
Daca doriti sa urmariti executarea programului "cu incetinitorul",ale-
geti din meniul Debug optiunea Throttle si setati un timp oarecare de
intarziere per operatie.In continuare,dupa fiecare operatie executata,se
va introduce si o pauza cu durata de timp respectiva.In programele mari,
nu este practic sa executati codul linie cu linie,sau sa introduceti timpi
de intarziere,deoarece depanarea se va extinde pe durate extrem de lungi.
-69-
Programele mari au sute si mii de linii de cod.Pentru a simplifica
operatiile de depanare a unui estfel de program,este bine ca programul sa
fie fragmentat in mai multe module executabile.In acest caz,identificati
modulul care contine eroarea,apoi procedati ca mai sus.Daca programul nu
este fragmentat in module exista doua solutii:
1. -procedati intuitiv.Analizati care este segmentul cel mai probabil
sa contina eroarea si fixati cateva nivele de intrerupere in acel segment
de cod.Daca nu identificati eroarea,verificati urmatorul segment in ordi-
nea probabila.
2. -impartiti programul in cateva segmente mari de cod,cu ajutorul
unor nivele de intrerupere.Identificati segmentul care contine eroarea si
subimpartiti segmentul in fragmente mai mici.Repetati operatia pana cand
localizati eroarea,apoi analizati codul linie cu linie cu Step Into.
Exista si o serie intreaga de programe de analiza si depanare,care
pot efectua toate aceste operatii automat.Acest gen de programe sunt
foarte utile pentru a depista si corecta o eroare de format,o eroare de
calcul sau o eroare de executie.Nici un program nu poate depista insa
erorile de conceptie,atunci cand acestea au respectat toate normele de
limbaj.
Meniul Tools mai contine inca doua optiuni.Event Tracking deschide o
fereastra de dialog in care puteti selecta ce evenimente doriti sa fie
evaluate in timpul executiei.Sistemul Windows functioneaza pe baza de
mesaje.Pentru fiecare eveniment din mediul Windows se elibereaza un mesaj
specific.Pentru ca mesajul respectiv sa aiba semnificatie intr-un program
trebuie sa existe si o bucla de repetitie,in care aceste mesaje sunt re-
ceptionate,analizate si comparate,apoi sunt utilizate pentru a declansa o
anumita operatie de raspuns la evenimentul respectiv.Fereastra Events
Tracking nu face de cat sa seteze o astfel de lista de comparatie.Toate
evenimentele incluse in lista vor fi urmarite cu ajutorul mesajului Win-
dows corespunzator.Cea de a doua optiune,Coverage Logging se utilizeaza
pentru a deschide fereastra de dialog Coverage Dialog Box,care permite sa
specificati optiunile de executie a programului (logging).Cu ajutorul
acestei ferestre se pot obtine informatii despre liniile de cod executate:
de cate ori a fost executata o linie de cod,ce linii de cod nu au fost
executate niciodata in program,cat a durat executia,etc.Datele vor fi
salvate intr-o fila cu extensia .LOG.
EXEMPLU : deschideti un program oarecare in Trace
alegeti din Tools Coverage Logging si specificati o fila oarecare,de
exemplu filalog.log,apoi confiramti cu OK.
Executati programul cu Step Out,apoi utilizati meniul File pentru a des-
chide fila filalog.log si a evalua operatiile matcate.Fila va contine
durata executiei,obiectul si adresa de memorie a filei sursa pentru fie-
care linie de cod pusa in executie.
Toate optiunile ferestrei Debugger se pot executa fie din meniurile
Debug,Tools,Window sau File,fie cu ajutorul butoanelor specializate din
bara de instrumente.
Nu exista reguli fixe pentru modul de a depana un program.Procedeele
tehnice depind de natura programului,dar si de creativitatea programatoru-
lui.Un singur sfat,pare sa fie totusi util:-nu va lansati la operatii si
strategii extrem de complicate.Solutia corecta este intotdeauna simpla.
Daca nu reusiti din prima incercare,incercati din nou dupa un anumit timp.
-70-
WATCH - fereastra Watch este inclusa in fereastra Debugger si se poate
utiliza pentru crearea sau depanarea unui program.Fereastra este special
conceputa pentru a putea evalua rezultatul unei expresii,sau pentru a
fixa un numar de nivele de intrerupere in timpul evaluarii unei expresii
complexe care realizeaza un calcul secvential sau utilizeaza o bucla de
repetitie.In cazul calculelor secventiale,fereastra WATCH permite identi-
ficarea operatiei care genereaza eroarea (Exemplu: in cadrul unui calcul
secvential,o anumita operatie returneaza o valoare situata in afara dome-
niului de definitie a variabilei respective).
Fereastra Watch este compusa dintr-o caseta de dialog,in care se vor
introduce expresiile ce urmeaza sa fie evaluate,si un camp de date in care
se va afisa rezultatul evaluarii sub forma :
Nume(Name).... Valoare(Value)... Tip de data(Type)
Fereastra se poate utiliza atat pentru a evalua expresii izolate,cat si
pentru a evalua o expresie oarecare inclusa intr-un program.
Pentru a deschide fereastra Watch se poate utiliza o comanda de genul:
ACTIVATE WINDOW WATCH declarata in fereastra de comenzi,sau se poate alege
din meniul Tools optiunea Debugger,apoi se apasa butonul Watch Window sau
se alege optiunea Watch din meniul Window.
EXEMPLU:
pentru a evalua o expresie izolata,deschideti fereastra Watch si apoi
introduceti in caseta de editare expresia dorita:
DATE()
TIME()
SYS(2)
1234+77/33
VAL(STR(3.14)) etc.
Dupa fiecare expresie apasati tasta ENTER.Daca expresia poate fi evaluata,
se va afisa numele,valoarea si tipul de data.Daca expresia este editata
gresit,sau nu poate fi evaluata,se va afisa textul: "Expresion could not
be evaluated".
Fereastra contine un meniu short-cut,ce poate fi activat cu un click
drept de mouse.Meniul contine urmatoarele optiuni:Insert Watch (adauga o
evaluare),Delete Watch(sterge o evaluare),Docking View(permite pastrarea
valorilor returnate),Hide(ascunde),Font(seteaza fonturile) si Help.
Pentru a evalua o expresie oarecare in cursul executiei unui program,
deschideti programul cu Open din meniul File,apoi editati si confirmati
expresia pe care doriti sa o evaluati si executati programul cu Step Out.
Expresia va fi evaluata doar in punctele in care s-a fixat un nivel oare-
care de intrerupere.Daca programul nu are nivele de intrerupere,se va
afisa doar rezultatul final(daca Docking View este bifata).
Daca programul contine o bucla de genul :
FOR x=1 to 10
y= x*x*3.14
ENDFOR
puteti evalua valorile pentru x si y doar dupa ce programul a executat
primul pas din bucla (altfel x si y sunt nedefinite si expresia nu poate
fi evaluata).Pentru a evalua valoarea lui x si y utilizati un nivel de
intrerupere la nivelul buclei,apoi utilizati butonul Step In pentru a
executa bucla pas cu pas,deschideti ferestra Watch si evaluati valoarea
lui x si y (variabila evaluata trebuie sa fie prezenta in memorie).
-71- WIZARDS
Wizards sunt o serie de mici programe,denumite programe "vrajitor" si
au fost concepute pentru a simplifica la maximum operatiile necesare
pentru crearea unor elemente din program.Cu ajutorul acestor programe vra-
jitor se pot crea ferestre specializate sau personalizate,rapoarte si
selectii complexe din tabele si baze de date,grafice si etichete sau chiar
file de tip HTML care permit accesul utilizatorilor de Web la datele
dintr-un tabel oarecare.
Pentru crearea unui astfel de obiect se poate utiliza fie un designer,
fie o secventa de linii de cod,in care se declara clasa,apoi se creaza o
instanta a clasei respective,se seteaza fiecare proprietate si metoda sau
eveniment etc.Programul vrajitor face toate aceste operatii automat,iar
pentru selectia sau setarea proprietatilor obiectului exploatat utilizeaza
o interfata grafica,in care programatorul nu trebuie sa introduca nici o
singura linie de cod.Toate operatiile necesare se pot executa cu un simplu
click de mouse.Practic se pot crea obiecte,sau chiar programe functionale
si de catre persoanele care nu detin notiuni elementare de programare.
Aceste programe vrajitor au limitele lor.Nu se pot crea decat obiecte
standard si nu se pot exploata decat proprietatile si metodele incluse in
wizard.Totusi,aceste programe au o serie de avantaje majore: sunt simple
si rapide,sunt foarte usor de utilizat,creaza obiecte sigure,care nu vor
crea probleme de "intretinere" sau "depanare",acopera sfera problemelor
esentiale ale unui program si pot fi reproduse usor,ori de cate ori este
necesar.
Toate programele wizard au la baza o interfata grafica formata din
butoane si casete de dialog,in care utilizatorul nu trebuie decat sa
introduca optiunea dorita,sau sa aleaga una dintre variantele prestabilite
(uneori se utilizeaza si butoane de navigare).Fiecare wizard este format
din cateva etape succesive.Se pot completa toate aceste etape,sau se poate
trece direct la etapa finala,apasand butonul "Finish" (daca se sare peste
etape,metodele si proprietatile vor ramane nedefinite).
Pentru a utiliza un astfel de program vrajitor exista mai multe puncte
de plecare.Din meniul Tools,selectati optiunea Wizards si apoi alegeti
tipul de wizard dorit,sau daca nu este inclus in lista,alegeti optiunea
All si apoi utilizati fereastra Wizard Selection pentru a selecta tipul
dorit.O alta varianta este sa utilizati optiunea New din meniul File,sa
alegeti tipul de element dorit si apoi sa apasati butonul Wizard.Pentru
a putea lansa in executie un wizard cu ajutorul unei linii de cod,se
poate introduce in fereastra de comenzi,sau intr-un program oarecare o
comanda de genul: DO wizard.app
care va deschide fereastra de selectie Wizard Selection sau se va putea
executa direct programul vrajitor dorit utilizand numele programului dorit
(programele wizard sunt arhivate in directorul Wizards).
EXEMPLU: DO Wzform.app
va deschide programul vrajitor de creere a ferestrelor
Aceste programe vrajitor au fost concepute pentru a fi utilizate.Nu va
retineti de la utilizarea lor,doar pentru ca sa pareti un programator mai
"avansat" sau "profesionist".Sunt simple,clare si sigure.Are rost sa pre-
ferati un desginer,sau chiar o secventa de linii de cod,doar atunci cand
obiectul dorit nu poate fi creat cu ajutorul unui Wizard.Programele Wizard
nu sunt doar pentru incepatori,ci sunt un instrument de lucru.
-72- APPLICATION WIZARD
APPLICATION WIZARD - este programul vrajitor ce poate fi utilizat
pentru a realiza o aplicatie completa,formata din fila proiect,tabele si
baze de date,rapoarte,biblioteci de clase etc.
Acest wizard poate fi utilizat in mai multe moduri.Primul tip de uti-
lizare este in situatia in care incepeti un program oarecare,dar nu aveti
nici un element creat anterior si nici nu stiti exact cum va arata progra-
mul final.In acest caz,application wizard va crea doar scheletul aplica-
tiei si principalele module ale programului.Pentru acest scop se vor crea
automat doua ferestre specializate(About.scx si QckStart.scx),un antet de
program care va lansa in executie fereastra QckStart,un meniu standard,
Dostları ilə paylaş: |
|
|