Funcţii predefinite în FoxPro Functii referitoare la semnul datelor numerice ABS(nExpr) * returneaza valoarea absoluta (modulul) a expresiei nExpr SIGN(nExpr) * returneaza valaoarea functiei semn pentru expresia nExpr Functii de aproximare a datelor numerice INT(nExpr) * returneaza partea intreaga din nExpr CEILING(nExpr) * returneaza cel mai apropiat întreg mai mare sau egal cu argumentul. FLOOR(nExpr) * returneaza cel mai apropiat întreg mai mic sau egal cu argumentul. ROUND(nExpr, nDecimalPlaces) * realizeaza rotunjirea valorii expresieii nExpr, la nDecimalPlaces zecimale Functii matematice elementare EXP(nExpr) * Functia exponent LOG(nExpr) * Functia logaritm zecimal SQRT(nExpr) * Functia radical SIN(nExpr): COS(nExpr). * Functia sin ASIN(nExpr): ACOS(nExpr). * Functia cos Functii referitoare la codificarea caracterelor din siruri CHR(nExpr) * returneaza caracterul al carui cod ASCII este nRxpr. ASC (cExpr) * returneaza codul ASCII al caracterului cExpr. Functii referitoare la subsirurile de caractere SUBSTR(cExpr, nStartPosition [, nCharactersReturned]) * extrage un subsir din sirul cExpr, pornind de la pozitia nStartPosition si cu lungimea nCharactersReturned (daca lipseste acest parametru, pana la sfarsitul sirului). Variante: LEFT(<cExpr>,<nExpr>); * returneaza primele nExpr caractere din sirul cExpr. RIGHT(<cExpr>,<nExpr>); * returneaza ultimele nExpr caractere din sirul cExpr. Alte functii: REPLICATE(<cExpr>,<nExpr>); * concateneaza de nExpr ori sirul cExpr. SPACE(<nExpr>) * returneaza sirul format din nExpr spatii Functii de eliminare a blancurilor: ALLTRIM(<cExpr>); * Elimina spatiile de la inceputul si sfarsitul sirului cExpr. LTRIM(<cExpr>) * Elimina spatiile de la inceputul sirului cExpr. RTRIM(<cExpr>) * Elimina spatiile de la sfarsitul sirului cExpr. Functii referitoare la informatii despre un sir de caractere LEN(<cExpr>); * returneaza lungimea sirului cExpr. ISDIGIT(<cExpr>); * returneaza .T. daca caracterul cExpr este o cifra, .F. in caz contrar. ISLALPHA(<cExpr>); * returneaza .T. daca caracterul cExpr este o litera, .F. in caz contrar. ISLOWER(<cExpr>); * returneaza .T. daca caracterul cExpr este o litera mica, .F. in caz contrar. ISUPPER(<cExpr>); * returneaza .T. daca caracterul cExpr este o litera mare, .F. in caz contrar. Functii referitoare la transformarea sirurilor de caractere LOWER(<cExpr>); * transforma caracterele sirului cExpr in litere mici corespunzatoare UPPER(<cExpr>); * transforma caracterele sirului cExpr in litere mari corespunzatoare PROPER(<cExpr>); * transforma fiecare cuvant din sirul cExpr a.i. sa aiba prima litera mare Functii referitoare la date calendaristice DATE() obtinerea datei curente a sistemului;
DOW(<dExpr>) returneaza numarul zilei din cadrul saptamanii pentru data specificata; CDOW(<dExpr>) returneaza numele zilei din saptamana pentru data specificata; DAY(<dExpr>) returneaza numarul zilei din cadrul lunii pentru data specificata; MONTH(<dExpr>) CMONTH(<dExpr>) returneaza numarul/numele lunii pentru data specificata; YEAR(<dExpr>) returneaza anul pentru data specificata; Instructiuni pentru controlul formatului datei calendaristice SET CENTURY ON/OFF SET DATE TO DMY|MDY| BRITISH|FRENCH| GERMAN … Functii pentru controlul timpului: TIME(<nExpr>) returneaza un sir de caractere de lungime 8, in formatul HH:MM:SS ce reprezinta ora exacta a sistemului; Instrucţiuni pentru controlul formatului de afişare al ceasului sistem: SET CLOCK ON | OFF SET CLOCK TO [<ROW>,<COL>] SET HOURS TO [12 | 24] Funcţie care verifica daca o expresie evaluata este vida sau nu EMPTY(eExpression) Funcţii de conversie din grade în radiani si invers DTOR(nExpr) RTOD(nExpr) transformarea unei date calendaristice intrun sir de caractere DTOC (<dExpr>) DTOS (<dExpr>) MDY (<dExpr>); DMY (<dExpr>) transformarea unui sir de caractere in data calendaristica CTOD (<cExpr>) transformarea valorilor numerice in siruri de caractere STR(nExpr [, nLength [, nDecimalPlaces]]) transformarea sirurilor de caractere in valori numerice VAL(cExpr)
Proceduri si functii utilizator Procedura reprezinta un grup de instructiuni ce primeste de la programul apelant un grup de parametri, realizeaza anumite prelucrari, dupa care revine in programul apelant. O procedura definita de utlizator nu poate intra in alcatuirea unei expresii ca operand, fiind analoaga comenzilor standard din Visual FoxPro. (1) PROCEDURE ProcedureName Commands [RETURN [eExpression ]] ENDPROC Functia utilizator (UDF = User Defined Function) reprezinta un grup de instructiuni care primeste un set de parametri de la programul apelant si ii returneaza acestuia o valoare ca rezultat al prelucrarilor parametrilor transmisi. O UDF poate intra in componenta unei expresii ca operand, analog functiilor standard din Visual FoxPro. FUNCTION FunctionName Commands [RETURN [eExpression]] ENDFUNC Visual FoxPro permite specificarea unui fisier de proceduri si/sau UDF cu comanda: (2)
SET PROCEDURE TO [FileName1 [, FileName2, ...]] [ADDITIVE] astfel incat acestea sunt apelabile de oriunde. Specificarea unui alt nume de fisier de proceduri inchide automat pe cel vechi. Numai un singur fisier de acest tip poate fi activ la un moment dat. Pentru a inchide fisierul curent de proceduri fara a deschide unul nou, se da comanda fara argument. SET PROCEDURE TO Avantajul acestor fisiere este ca aduna toate rutinele intrun singur loc, apelul lor facanduse mult mai rapid decat in cazul unor fisiere program separate. Ordinea de cautare a unei proceduri de catre Visual FoxPro este: programul curent in executie fisierul de proceduri indicat in SET PROCEDURE cauta un fisier program independent in directorul curent in ordinea: .EXE (executabil), .APP (aplicatie), .FXP (compilat), .PRG (sursa) cauta un fisier program independent in calea Visual FoxPro de directoare stabilita cu SET PATH TO <lista directoare> Apelul unei proceduri se face cu: DO ProgramName1 | ProcedureName [IN ProgramName2] [WITH ParameterList] iar a unei UDF cu o simpla atribuire <variabila> = FuncName() Daca nu intereseaza valoarea returnata se poate scrie: =FuncName(). Exemplu: Se creaza o clasa de obiecte numita "Hello" si se adauga o fubctie metoda numita "SayHello", care intoarce sirul "Hello World" care va fi afisat de functia sistem MESSAGEBOX. Nota: Definitia clasei este plasata dupa codul programului care instantiaza obiectul. Local oHello oHello=CREATEOBJECT("Hello") =MESSAGEBOX(oHello.SayHello(),48) RELEASE oHello
* Codul de definire a clasei DEFINE CLASS Hello AS CUSTOM FUNCTION SayHello RETURN "Hello World" ENDFUNC ENDDEFINE