Documente Academic
Documente Profesional
Documente Cultură
SGBD-ul FoxPro reprezintã un mediu integrat de dezvoltare a programelor utilizator, oferind un editor
de texte pentru scrierea textelor sursã, depanator, compilator şi linkeditor. Se pot folosi ambele tehnici
de programare: atât programarea clasicã, structuratã şi modularã, cât şi programarea orientatã spre
obiecte. Programele sunt văzute ca fişiere de comenzi (*.PRG).
Apelul editorului se face prin comanda MODIFY COMMAND <fis.prg>
Comanda deschide o fereastră de editare, folosită atât pentru crearea cât şi pentru modificarea
programului sursă recunoscut prin numele <fis.prg>. Fişierul rezultat are extensia implicită .prg.
Salvarea se face cu CTRL+W.
Lansarea programului în execuţie (automat se face şi compilarea) se face prin comanda DO
<fis.prg>
Programul este executat până la terminarea fişierului sau pânã la întâlnirea comenzii RETURN, care
determinã revenirea în fereastra de comenzi. Dacã un fişier de comenzi este apelat din alt fişier de
comenzi, spunem cã este subprogram. Nu sunt diferenţe între construirea unui program şi a unui
subprogram. Prin comanda DO se cautã fişierul de comenzi indicat, se deschide, se executã liniile
acestuia, se închide şi se revine în programul apelant sau în fereastra de comenzi. În programe şi numai
în acest context se pot folosi şi comenzile multilinie cum ar fi comanda IF din exemplul urmãtor.
Dacă este necesară fragmentarea comenzii, se va folosi semnul „;“ (punct şi virgulã). Nu există
separatori între comenzi. Lungimea maximă a unei linii de comandă este de 1024 de caractere.
Comentariile sunt introduse într-un program fie prin caracterul asterisc (*) la începutul liniei, fie prin
dublu ampersand (&&) în continuarea comenzii propriu-zise.
FoxPro poate să apeleze comenzi DOS prin comanda ! / RUN
Exemplu
MODIFY COMMAND Salarii - deschide ecranul de proiectare Salarii.prg
DO SALARII - compileazã şi executã Salarii.prg
! DIR - afişeazã lista fişierelor din directorul curent
run erase salarii.prg - apeleazã comanda de ştergere DOS
1. Variabile şi masive
Gestiunea variabilelor
O variabilã de memorie reprezintã o modalitate prin care FoxPro depoziteazã şi utilizeazã temporar
date într-un program. Variabila de memorie reprezintă o zonă de memorie internă în care se
memorează o dată (de tip character, numeric, logic etc.); atunci când se folosesc într-un program,
variabilele trebuie create, deci li se atribuie un nume, un tip şi o valoare. Numele variabilei este un şir
de caractere alfanumerice. Tipul variabilei este atribuit acesteia odatã cu valoarea.
Atribuirea unei valori într-o variabilă de memorie, se realizează cu operatorul ‘=’ sau prin comanda
STORE.
STORE expr TO var
sau var =expr
Exemple:
1. x = 0
sau STORE 0 to x
2. STORE ‘popescu’ TO alfa
sau alfa = ’popescu’
3. a=0
b=0
sau STORE 0 to a,b
Tablourile sau masivele de date sunt structuri statice neomogene. Pot avea maxim 2
dimensiuni. Masivele pot fi unidimensionale (se numesc vectori), respective bidimensionale (se
numesc matrici). Crearea unui masiv se face prin atribuirea unui nume şi prin precizarea nr. de
elemente din vector, respective a nr. de linii şi coloane din matrice.
Declararea tablourilor:
DIMENSION / DECLARE < tablou(dim1[,dim2])>,. >
Iniţializarea unui tablou se face odatã cu declararea dimensiunii la valoarea .F. Altã iniţializare globalã
a tuturor elementelor unui tablou se poate face prin comanda STORE.
O matrice se poate redimensiona fãrã ca prin aceastã schimbare sã i se reiniţializeze componentele.
Exemplu:
1. dimension a[2, 2]
store 5 to a - o matrice pătrată 2x2 este iniţializată pe valoarea 5
2. dimension a[3, 3] - redimensionare
Lucrul cu imprimanta
Sunt disponibile douã comenzi care direcţionează efectul comenzilor de afişare către imprimantă.
Comanda SET PRINTER ON/OFF permite activarea/dezactivarea imprimantei.
Comanda SET DEVICE TO PRINTER/ TO SCREEN direcţionează comanda către imprimantă
sau ecran.
2. Comenzi pentru introducerea formatată a datelor şi pentru afişarea datelor pe ecran
În Visual FoxPro, ecranul este împărţit logic în 25 de linii şi 80 de coloane ; astfel, pot afişate
maxim 2000 caractere pe ecran.
Funcţia ROW() returnează un număr ce reprezintă linia pe care se află cursorul (practic, o
valoare între 0 şi 24). Funcţia COL() returnează un număr ce reprezintă coloana pe care se află
cursorul (practic, o valoare între 0 şi 79).
Comanda SET DISPLAY TO CGA/COLOR/EGA25/EGA43/MONO/VGA25/VGA50
controlează modul de lucru al monitorului.
Grupul de comenzi SAY – GET – READ sunt folosite pentru operaţiile de intrare şi ieşire.
Exemplu:
nume = …..
CLEAR
@10, 10 SAY “introduceti numele dumneavoastra” GET nume
READ
CLEAR
? “salut”, nume, “!”
Comanda SAY are ca efect afişarea datelor pe ecran, la coordonatele precizate prin linie, coloană.
@<linie, coloană> SAY<variabilă> [PICTURE <expC>] [FUNCTION <expC>]
FoxPro oferă posibilitatea introducerii datelor sub forma unor machete sau formate prin
asocierea la clauza GET a clauzelor PICTURE şi FUNCTION:
@<linie, coloană> GET<variabilă> [PICTURE <expC>] [FUNCTION <expC>] [RANGE
expN1, expN2] [DEFAULT exp] [SIZE expN1, expN2] [VALID expL/expN[ERROR expC]]
Comanda GET stabileşte porţiunea de pe ecran unde vor fi introduce, de la tastatură, valorile ce vor fi
atribuite variabilei <variabilă>; citirea propru-zisă a datelor se face prin comanda READ.
• READ determină citirea conţinutelor zonelor de editare pentru introducerea valorilor de la tastatură,
create prin GET.
Observaţii:
- GET şi READ se folosesc obligatoriu împreună, însă READ se scrie pe o singură linie. Comanda
READ se poate folosi o singură dată pentru mai multe comenzi de tip GET.
- Comenzile SAY şi GET se pot scrie atât pe linii diferite, cât si în cadrul aceleiaşi linii de comandă.
Exemple:
1. citirea unui număr cu două zecimale pe câmp de 7 caractere:
a=0
@10,10 GET a PICTURE '9999.99'
READ
2. citirea oricăror caractere pe câmp de lungime 10:
b=space(10)
@10,10 GET b PICTURE REPLICATE ('X',10)
READ
3. introducere cu majuscule:
b=space(10)
@10,10 GET b PICTURE REPLICATE ('!',10)
READ
4. introducerea unei majuscule şi a două cifre cu centrare:
.....PICTURE 'A99' FUNCTION 'I!'
5. următoarele machete de editare sunt echivalente:
..... PICTURE 'AAAAA' FUNCTION '!'
..... PICTURE 'XXXXX' FUNCTION 'A!'
Strategii de depanare
Când survine o eroare în timpul execuţiei programului, sistemul afişează o casetă de dialog conţinând
mesajul şi trei butoane: Ignore, Suspend, Cancel.
• Ignore – ignoră eroarea şi continuă programul (este cazul unor erori minore, cum ar fi inexistenţa
unui set de culori).
• Suspend – suspendă execuţia, lasă fereastra de editare deschisă şi cursorul plasat pe linia greşită.
Mediul este lăsat intact. Operatorul încearcă corectarea şi se revine cu comanda RESUME din
fereastra de comenzi. Aceasta reexecută linia de la care a apărut eroarea. Este cazul unei erori mai
grave, cum ar fi lipsa fişierului care trebuie deschis, dar care poate fi corectatã manual, direct. Poate fi
executată o comandă de creare a unei tabele şi apoi se poate reveni. Se pot deschide ferestrele de
depanare Trace, Debug.
• Cancel – anulează execuţia programului, vă plasează în fereastra de editare pe linia greşită.
Utilizarea instrumentului Debugger
Utilitarul Debugger se apelează selectând Tools, Debugger sau prin comanda SET STEP ON din
fereastra de comenzi. Se deschide o fereastră cu un meniu principal, o bară cu butoane pentru
selectarea directă a unor opţiuni, cinci ferestre de lucru, fiecare cu meniuri contextuale.
Principalele ferestre sunt:
Fereastra Trace permite vizualizarea liniilor pe parcursul execuţiei programului. Deschiderea unui
program pentru vizualizare se face prin File, Open sau prin clic pe butonul cu acelaşi nume.
Programul deschis trebuie sã fie rulat în regim de depanare. Fereastra Watch permite urmărirea
valorilor variabilelor, expresiilor. Adăugarea rapidă a unei variabile se face prin poziţionarea pe
variabilã în fereastra Trace şi tragere şi plasare spre fereastra Watch.
Fereastra Call stack permite vizualizarea stivei de apeluri a funcţiilor şi procedurilor folosite în
program.
Fereastra Output este o fereastră specialã în care sunt afişate ieşirile special destinate depanării, prin
intermediul comenzii DebugOut.
Fereastra Local permite urmărirea variabilelor locale unui modul.
Urmărirea execuţiei unui program se poate face prin rularea acestuia linie cu linie şi observarea
efectelor asupra variabilelor, câmpurilor, tabelelor. Compararea valorilor expresiilor cu cele aşteptate
poate să conducă la depistarea erorii. Dacă depistăm o eroare şi închidem fereastra depanatorului,
intrăm în editarea sursei şi facem modificarea.