Programare FoxPRO

Mecanismele programarii în Visual FoxPro
Programarea în Visual FoxPro implica scrierea unor secvente de cod: instructiuni sub forma de comenzi, functii sau operatii pe care Visual FoxPro le poate interpreta. Acestea pot fi introduse în:
- fisiere de programe;
- ferestre de cod pentru evenimente sau metode în cadrul proiectantului de formulare (Form Designer) sau al proiectantului de clase (Class Designer);
- ferestre procedurale în cadrul proiectantului de meniuri (Menu Designer);
- ferestre procedurale în cadrul proiectantului de rapoarte (Report Designer).

Crearea de programe

- 1. în Project Manager se selecteaza optiunea Programs din fila Code;
2. se alege comanda New
- 1. se alege comanda New din meniul File
2. din caseta de dialog New se alege Program
  1. 3. se alege New File.
- în fereastra Command se foloseste comanda MODIFY COMMAND
MODIFY COMMAND [FileName | ?]
Visual Fox Pro va deschide o noua fereastra, în care se pot edita instructiunile programului.

Salvarea programelor

- din meniul File se alege Save
- daca se salveaza un program creat în Progect Manager , acesta este automat adaugat proiectului.

Modificarea programelor

Înainte de a modifica un program, acesta trebuie redeschis prin una din urmatoarele metode:
- pentru programele cuprinse într-un proiect, se selecteaza în Project Manager si se alege comanda Modify
- în meniul File se alege comanda Open. Din lista Files of Type se alege Program, se selecteaza fisierul de modificat si se alege comanda Open.
- Se foloseste comanda MODIFY COMMAND în care se specifica numele programului sau parametrul “?”.

Rularea programelor

- daca programul este cuprins într-un proiect, se selecteaza din Project Manager si se alege comanda Run.
- Din meniul Program se alege comanda Do
- Se foloseşte butonul de execuţie din bara de instrumente external image placeholder?w=200&h=50
- în fereastra de comenzi se foloseste comanda DO
DO ProgramName1 | ProcedureName [IN ProgramName2] [WITH ParameterList]

Conceptele de baza ale programării
Variabile. Macrosubstituţia.
Crearea unei variabile sau modificarea valorii acesteia se face prin una din metodele următoare:
(1) memvar = expr
Exemplu: msal=1000
mdata=date()
(2) STORE expr TO lista var
O tehnica speciala de lucru cu variabile o reprezinta macrosubstitutia, prin care continutul unei variabile de tip sir de caractere este tratat ca numele altei variabile sau alt element FoxPro (câmp al unei baze de date, denumire fişier). Macrosubstituţia functionează ca şi cum în locul variabilei respective ar fi pus şirul de caractere conţinut de aceasta, fără apostrofurile delimitatoare.
Operatorul de macrosubstitutie este &. ( && indică un comentariu)
Exemplu:1. a=”var”
var= ”Continutul variabilei var”
? a && se afisaza var
? &a && rezultatul afisarii este Continutul variabilei var ? var && rezultatul afisarii este Continutul variabilei var
Obs.: Dezavantajul este ca apare o problema de performanta pentru compilator, in sensul ca linia pe care apare, trebuie compilata “din mers” in momentul rularii.

Comenzi pentru afişarea variabilelor de memorie existente la un moment dat:

LIST / DISPLAY MEMORY [NOCONSOLE][TO PRINTER [PROMPT]| TO FILE ]

Manipularea datelor
a) Operatori
Operatoriiutilizati pentru a crea expresii în Visual FoxPro sunt operatori aritmetici, operatori relationali, operatori logici, operatori specifici şirurilor de caractere: concatenare (+,-) apartenenta $, etc, operatori specifici datelor calendaristice: adunare sau scadere numar de zile dintr-o data calendaristica, compararea a doua date.
Exemplu:
1. Fie urmatoarele valori de tip caracter stocate în variabilele v1 si v2:
v1= “Univ. ” şi v2=“Stefan Cel Mare”
Expresia: ? v1+v2 va avea ca efect afişarea pe ecran a valorii “ Univ. Stefan Cel Mare”
2. Daca variabilele v1 si v2 au valorile următoare:
v1= “ Str. Univ. ” şi v2=21
Expresia: ? v1+v2 va avea ca efect afisarea pe ecran a unui mesaj de eroare.


b) Comenzi
Fiecare comandă determină executarea unei acţiuni. Sintaxa generala a unei comenzi este:
Verb < clauza >..
Unde: verb indica acţiunea ce trebuie executată iar clauzele sunt opţionale si furnizează informaţii suplimentare legate de modul cum se va executa actiunea
Daca o comanda este scrisa pe mai mult de o linie, atunci la sfarsitul fiecarei linii intermedare se va plasa simbolul “;”.

  1. 1. Instructiuni (comenzi) de intrare-iesire

Sunt instructiuni de afisare si instructiuni pentru citirea de la tastatura.

a) Instructiuni de afisare.
Aceasta categorie de comenzi cuprinde urmatoarele instructiuni:
(1) ? Expr1 [PICTURE Cod_format] | [FUNCTION Cod_format] |[AT nColumn] [FONT Nume_font [,Dimens_Font]
Efect: Afiseaza, pe ecran, valorile uneia sau mai multor expresii Visual FoxPro valide sau le tipareste la imprimanta, daca SET PRINTER este pe ON , conform valorilor clauzelor PICTURE, FUNCTION,etc.
Obs.: - clauza AT defineste coloana unde se afiseaza ;

b) Instructiuni de citire de la tastatura.
(1) ACCEPT [ ] TO
Se afiseaza pe ecran valoarea dupa care se asteapta introducerea unui sir de caractere, de la tastatura, ce se atribuie variabilei de memorie .


(2) INPUT [<cExpr> ] TO
Se afiseaza pe ecran valoarea dupa care se asteapta introducerea unei expresii de la tastatura, a carei valoare se atribuie variabilei de memorie .
Obs.: - comanda cere obligatoriu introducerea unei expresii; - pentru introducerea constantelor de tip sir sau data calendaristica se vor folosi delimitatorii specifici (“,‘,[ ], resp. {}).


-transformarea şirurilor de caractere in valori numerice
VAL(cExpr)
ANEXA 2Instrucţiuni (comenzi) de configurare

Instructiuni pentru controlul formatului datei calendaristice
SET CENTURY ON/OFF / validează, respectiv invalidează afişarea anului pe patru digiţi
SET DATE TO DMY|MDY| BRITISH|FRENCH| GERMAN – stabileşte formatul de afişare a datei calendaristice
Instructiuni pentru controlul formatului de afişare al ceasului sistem:
SET CLOCK ON | OFF – validează/invalidează afişarea ceasului
SET CLOCK TO [,]- stabileşte poziţia pe ecran în care se va afişa ceasul
SET HOURS TO [12 | 24] – stabileşte formatul de afişare al orei
Diverse instrucţiuni de configurare
SET BELL ON/OFF – validează/invalidează alarma sonoră a mediului
SET CARRY ON/OFF – validează/invalidează păstrarea valorilor din înregistrarea curentă pentru o nouă înregistrare introdusă prin una din comenzile INSERT, APPEND sau BROWSE
SET DATABASE TO [NumeBD] – stabileşte baza de date curentă
SET DEFAULT TO [Specificator_director] – stabileşte directorul curent
SET DELETED ON/OFF – invalidează/validează utilizarea înregistrărilor marcate pentru ştergere în comenzi ulterioare
SET ESCAPE ON/OFF – validează/invalidează întreruperea execuţiei unui program sau a unei comenzi la apăsarea tastei ESCAPE
SET EXCLUSIVE ON/OFF – stabileşte dacă fişierele tabel vor fi deschise pentru uzul exclusiv sau partajat într-o reţea
SET LOCK ON/OFF – validează/invalidează blocarea automată a tabelelor pentru anumite comenzi.
SET PATH TO [lista_cai_de_cautare] – stabileşte o listă a căilor de căutare pentru fişiere
SET TALK ON/OFF – validează/invalidează afişarea rezultatelor comenzilor Visual FoxPro