|
partiment cu obiectul care o apeleaza,sau sa se precizeze calea completa
|
səhifə | 17/17 | tarix | 17.03.2018 | ölçüsü | 1,41 Mb. | | #45490 |
| partiment cu obiectul care o apeleaza,sau sa se precizeze calea completa
de acces la compartimentul in care este arhivata.La nevoie,utilizati fe-
restrele Trace si Locals,pentru a identifica elementele ce pot relationa.
Situatiile cele mai delicate sunt atunci cand utilizati obiecte vizuale
pentru a genera alte obiecte vizuale,in functie de rezultatul unor ope-
ratii efectuate in tabele si baze de date.De exemplu,atunci cand utilizati
o baza de date pentru a extrage mai multe rapoarte de sinteza.Daca tabele-
analizate sunt in limite rezonabile,rapoartele produse vor fi mici,iar
programul va functiona perfect.Pe masura ce tabele devin tot mai mari,vor
creste si rapoartele generate.Daca generati simultan mai multe astfel de
rapoarte,exista riscul de a depasi spatiul de memorie.Solutia este sa
lucrati secvential.Analizati succesiv fragmente din tabel,extrageti datele
utile intr-un tampon de memorie,apoi creati si salvati primul raport.In
etapele ulterioare,procedati in mod similar pentru a crea succesiv fiecare
raport.Astfel,se vor putea crea rapoarte multiple,indiferent de numarul
de inregistrari din tabel,dar durata de executia va fi mult mai lunga.
In acest gen de situatii,programarea paralela ofera o solutie mai buna.
-118-
Pentru a putea optimiza executia unui program,trebuie sa tineti o evi-
denta stricta a volumului de memorie consumata/operatie.Exista numeroase
procedee tehnice.Cel mai simplu dintre ele,este sa fragmentati tabelele
mari in tabele mai mici si apoi sa utilizati un tabel centralizator pentru
ordonarea lor.
EXEMPLU : sa presupunem ca doriti sa formati o baza de date,pentru un
numar de 8000 de angajati.Pentru fiecare angajat,doriti sa utilizati 20
de rubrici a cate 20 de caractere.Tabelul necesar,va ocupa 8000 x 20 x 20
adica 3200000 de bytes( 3,2 M ).
Pentru a creste viteza de executie,tabelul poate fi impartit in 10 ta-
bele mai mici.Fiecare astfel de tabel,va contine 800 de angajati,adica
800 x 20 x 20 = 320000 de bytes (0,32 M).Pentru ca tabelele sa lucreze la
fel ca si unul singur,creati si un tabel centralizator.In acest tabel,
utilizati o rubrica de 20 de caractere pentru numele angajatului,una de
10 caractere pentru numele tabelului sursa si una de 10 caractere pentru
pozitia din tabelul respectiv.Acest tabel va ocupa 8000 x 20 + 8000 x 10
+ 8000 x 10 adica 320000 de bytes (0,32 M).
Pentru a lucra cu datele unuia dintre angajati,creati o interfata gra-
fica in care introduceti numele angajatului.Utilizati data respectiva
pentru a deschide tabelul centralizator,din care preluati tabelul sursa
si pozitia din tabel,apoi inchideti tabelul centralizator,pentru a elibera
memoria consumata.In continuare,deschideti tabelul sursa si deplasati
cursorul la pozitia respectiva.
Observati ca in loc sa lucreze cu 3,2 M,programul utilizeaza doar 0,32
M pentru a obtine acelasi rezultat.Este de 10 ori mai economic si mai
rapid.In plus,daca intevine o eroare de scriere a datelor,nu se va deregla
intreaga baza de date,ci doar tabelul respectiv.Orice eroare de editare
va fi de zece ori mai usor de depistat si/sau depanat.
Sistemul FoxPro,accepta orice tabel,pana la limita memoriei de operare.
In trecut,memoria de operare era de 2-4 M bytes,astfel incat aceste pro-
cedee tehnice erau absolut indispensabile.In etapa actuala,exista si con-
figuratii hardware cu memorie de RAM de peste 1000 M (1 G),astfel incat
procedele tehnice posibile sunt mult mai maleabile.Este bine sa calculati
dimensiunile tabelelor cu care lucrati,in functie de configuratia hardware
medie.In prezent,majoritatea calculatoarelor lucreaza inca cu o memorie
de RAM de 32 M.Pentru programele comerciale,este recomandabil sa nu utili-
zati tabele mai mari de 4 M,chiar daca programele functioneaza perfect.
La nevoie,tabelele se pot fragmenta arborescent.Tabelul centralizator,
contine adresa pentru alte tabele de centralizare,din care se face apoi
raspandirea spre tabelele sursa,etc.In acest mod,se pot arhiva volume
imense de date,cu consum minim de memorie de operare.Acest procedeu este
indispensabil atunci cand tabelele contin campuri Memo cu dimensiuni
variabile sau clip-uri audio-video,imagini digitale,etc...,pentru care nu
se poate face un calcul exact al memoriei consumate.
Acest gen de calcul al memoriei consumate nu se limiteaza doar la
tabele si baze de date.Daca programul contine un numar mare de obiecte
vizuale,sau lucreaza cu file de tip text si cu obiecte de tip ActiveX,
este bine sa calculati pentru fiecare etapa de executie,atat memoria
consumata cat si restul de memorie libera,astfel incat sa eviati supra-
scrierea satelor,sau blocarea executiei.Este bine sa lasti intotdeauna in
rezerva cel putin 8-10 M,pentru operatiile de rutina si "cleaning".
-119-
Visual FoxPro este un model de program orientat spre programarea mo-
dulara,structurata.Fiecare modul este inclus intr-o fila independenta,cu
extensia .scx,.qpr,.pjx,etc.Verificati dimensiunea fiecarui astfel de
modul inainte de a include fila respectiva in proiect,sau in aplicatie.
Programele se pot realiza si prin combinarea modulelor preluate din
mai multe programe diferite.La prima vedere,pare o operatie usoara,ca un
joc de copil.Simpla alaturare a unor module functionale nu va forma insa
intotdeauna un program performant.Trebuie se verificati cu atentie toate
liniile de cod din fiecare modul,dar mai ales modul in care se stabilesc
legaturile dintre doua sau mai multe astfel de module.Una dintre cele mai
frecvente probleme intalnite in aceasta etapa de dezvoltare a programelor
o reprezinta incompatibilitatile de format.
EXEMPLU : doriti sa combinati doua module de calcul si ambele module
contin o variabila cu acelasi identificator dar cu tip de data diferit
( de tip integer in primul modul si de tip double in cel de al doilea
modul).Acest gen de situatii,poate genera rezultate imprevizibile,in
functie de modul de apel( variabila double poate accepta si valorile de
tip integer,dar situatia inversa este incompatibila).
Un alt gen de situatie frecvent intalnita,este atunci cand unul dintre
modulele utilizate contine diverse subclase ale claselor standard.Aceste
subclase,vor functiona asemanator cu cele standard in unele situatii,dar
vor contine si o serie de metode si evenimente personalizate,ce pot influ-
enta negativ executia programului.
Din acest motiv,este bine sa verificati cu maximum de atentie modulele
preluate de la alti programatori.Pentru modulele realizate de d-voastra,
este bine sa arhivati si o fila de tip text,in care sa arhivati in rezumat
principalele caracteristici ale modului,cu asa numitele "puncte cheie",
sau proprietati particulare ale obiectului.In acest mod,in viitor va fi
mult mai usor sa estimati compatibilitatea dintre module.
O alta problema,relativ frecvent intalnita,este atunci cand combinati
module provenite din,sau create cu versiuni diferite ale programului
Visual FoxPro.In principiu,exista o compatibilitate destul de buna intre
aplicatiile realizate cu versiuni diferite,dar aceasta regula nu este
universal valabila.Unele dintre componente,fac apel la file externe sau
la biblioteci de tip DLL.Daca utilizati acest gen de module si nu rezol-
vati si acest gen de legaturi,programul poate stagna in etapa de cautare
a legaturilor externe,sau poate returna un mesaj de eroare,aparent inex-
plicabil (versiunile diferite au seturi diferite de biblioteci DLL).
In concluzie,programarea in Visual FoxPro,este usoara,chiar foarte
usoara,dar nu este un joc pentru copii.Este extem de important sa intele-
geti fiecare operatie din program.Nu este bine sa utilizati module sau
componente pe care nu le intelegeti,chiar daca sunt functionale.In orice
moment al executie,trebuie sa aveti controlul asupra tuturor operatiilor
executate,sau in curs de executie.Nu este bine sa copiati solutiile altor
autori,decat dupa ce verificati fiecare functie,sau comanda.Pentru orice
problema,este bine sa va confruntati cu alti colegi,sau sa cereti sfatul
unor programatori mai experimentati.
Visual FoxPro va poate extinde orizontul cognitiv,dincolo de orice ima-
ginatie,sau va poate transforma viata intr-un calvar - depinde numai de
d-voastra.
S F A R S I T
Dostları ilə paylaş: |
|
|