|
pentru a verifica si filtra datele preluate,pentru a schimba formatul sau
|
səhifə | 16/16 | tarix | 03.01.2019 | ölçüsü | 1,42 Mb. | | #89992 |
| pentru a verifica si filtra datele preluate,pentru a schimba formatul sau
aspectul datelor,pentru a executa o copie de siguranta sau pentru a
executa si o serie de operatii invizibile pentru utilizator.
-120-
De exemplu,pentru a prezenta datele in alt format decat cel in care au
fost preluate:
EXEMPLU: (vezi si Prj119)
Salvati o fila noua si proiectul in Prj119.Adaugati doua campuri Tlabel si
un obiect TComboBox.Alegeti fonturi,culori si dimensiuni diferite pentru
cele doua campuri TLabel si setati Label1.DragMode=dmAutomatic.Apoi
includeti in ComboBox1.Items lista de texte dorita.
Pentru ComboBox1 alegeti evenimentul OnChange si adaugati procedura:
TForm1.ComboBox1Change(Sender: tObject);
begin
Label1.Caption:=ComboBox1.Text;
end;
Pentru Label alegeti evenimentul OnClick si adaugati urmatoarea procedura
procedure TForm1.Label1.Click(Sender: TObject);
begin
Label1.BeginDrag(true);
Label1.EndDrag(true);
end;
Apoi alegeti evenimentul OnEndDrag si adaugati procedura:
procerdure TForm1.Label1EndDrag(Sender,Target: TObject;X,Y: Integer);
begin
Label2.Caption:=Label1.Caption:
end;
Tastati F9 si executati aplicatia.Selectati texte din TComboBox,apoi
executati un click in Label1 pentru a transfera datele in Label2.Even-
tual puteti adauga un filtru in Label1EndDrag astfel incat anumite
combinatii de caractere sa fie excluse de la transfer (gen imprecatii).
Pentru ca operatia de "drag and drop" sa se desfasoare doar in anu-
mite conditii,se va utiliza si Accept din OnDragOver:
EXEMPLU: (vezi si Prj120)
Salvati o fila noua si proiectul in Prj120.Adaugati un obiect TImage si
utilizati Picture pentru a incarca o imagine(Images/Splash/16color/Athena)
apoi selectati evenimentul OnMouseDown si adaugati urmatoarea procedura:
procedure TForm1.Image1MouseDown(Sender: TObject;Button: TMouseButton;
Shift: TShiftState; X,Y: Integer);
begin
if ssCtrl in Shift then Image1.BeginDrag(true);
end;
In acest fel,operatia de "drag and drop" nu va fi initiata decat daca se
apasa si tasta Ctrl in timp ce se executa un click de mouse.
Selectati Form1,alegeti evenimentul OnDragOver si adaugati procedura:
procedure TForm1.FormDragOver(Sender,Source: TObject; X,Y : Integer;
State: TDragState; var Accept: Boolean);
begin
Accept:=(Source is TImage);
end;
Observati ca procedura adauga doua informatii esentiale: Accept este
diferit de False si Source este TImage.Cu alte cuvinte,obiectul care
accepta operatia de drag and drop este un obiect de tip TImage.
Pentru a trage obiectul Image1 se poate pastra DragMode la valoarea
dmManual,deoarece exista deja o selectie clara a obiectului activ.
-121- Analiza datelor
Setarea parametrului Accept din OnDragOver este esentiala atunci cand
aplicatia d-voastra contine un numar mare de obiecte si doriti sa limitati
numarul de operatii "drag and drop" posibile (utilizatorul va descoperii
intotdeauna operatia gresita sau cea care induce o eroare !).
Pentru a executa operatia propriu zisa de deplasare a obiectului alegeti
evenimentul OnDragDrop si adaugati procedura:
procedure TForm1.FormDragDrop(Sender,Source: TObject;X,Y : Integer);
begin
if Source is TImage then
begin
TImage(Source).Left:=X;
TImage(Source).Top:=Y;
end;
end;
Observati ca procedura verifica daca sursa este corecta.
Tastati F9 si executati aplicatia.
Pentru a deplasa imaginea,mentineti tasta Ctrl apasata si trageti cu
butonul mouse apasat.Observati ca in interiorul imaginii cursorul are un
aspect iar in exteriorul imaginii are alt aspect(puteti utiliza DragCursor
pentru a schimba aspectul cursorului).Imaginea se va deplasa doar in
momentul in care eliberati butonul mouse.
Delphi 3 are un set destul de restrans de proceduri specializate pentru
operatiile de "darg and drop".Programele mai noi au adaugat un set intreg
de noi facilitati,care permit operatii extrem de complexe.De exemplu se
poate realiza un program de analiza,in care puteti trage orice tip de
fila,pentru a obtine o analiza semantica completa.
ANALIZA DATELOR
Orice programator este confruntat si cu programe realizate de confratii
sai.Ca rezultat,orice programator trabuie sa faca si munca de analiza.
La volumul actual de informatii este imposibil ca programele sa fie veri-
ficate linie cu linie si caracter cu caracter.Pentru a simplifica munca
de verificare si depanare a programelor,exista programe specializate care
citesc fiecare fila si analizeaza continutul token cu token (prin token
se intelege fiecare element distinct din program).
Este bine sa aveti un numar cat mai mare de astfel de programe,dar
este si mai bine sa stiti sa le programati.Nici un programator nu va avea
incredere deplina decat in programele realizate de el.
Exista un numar foarte mare de modalitati de abordare a acestui subiect
dar,in acest manual nu se vor prezenta decat cateva notiuni elementare.
Spre deosebire de alte programe,Delphi este axat spre obiecte vizuale si
programare structurata modular.Ambele caracteristici sunt extrem de utile
pentru realizarea de programe de analiza.Astfel,in loc sa realizati un
singur program "mamut" care sa tina cont de toate eventualitatile posibile
este mult mai practic sa realizati module mici,care executa un numar redus
de operatii,cu consum minim de memorie si cu risc minim de a genera erori
suplimentare.Nu trebuie uitat ca programele de analiza si depanare sunt
rulate de obicei in mediu de memorie defectiv sau "la limita".In plus,
obiectele vizuale ofera o spatiere suplimentara a datelor,astfel incat
sa limiteze la maximum memoria consumata pentru prelucrarea datelor defec-
tive sau eronate.
-122-
Pentru a analiza o fila de cod,sau o fila de text puteti realiza un
modul de genul:
EXEMPLU: (vezi si Prj121)
Salvati o fila noua si proiectul in Prj121.Adaugati 2 campuri TMemo,2
obiecte TEdit,un buton si o serie de campuri TLabel pentru explicatii sau
pentru afisarea rezultatelor.
Primul obiect TEdit va fi utilizat pentru a incarca fila analizata (din
directorul curent) iar cel de al doilea obiect va fi utilizat pentru a
specifica elementul de program cautat.
Atribuiti butonului urmatoarea procedura OnClick:
procedure TForm1.Button1Click(Sender: TObject);
var F1:TextFile;
sir1,sir2:array[0..256] of char;
a,b,c:variant;
begin
a:=0;b:=0;c:=0;
StrPCopy(sir2,Edit2.Text);
AssignFile(F1,Edit1.Text);
Reset(F1);
while not EOF(F1) do
begin
Readln(F1,sir1);
Memo1.Lines.Add(sir1);
if StrPos(sir1,'procedure')<> nil then a:=a+1;
if StrPos(sir1,'function')<> nil then b:=b+1;
if StrPos(sir1,sir2)<> nil then Memo2.Lines.Add(sir1);
c:=c+1;
end;
CloseFile(F1);
Label3.Caption:=b;
Label5.Caption:=a;
Label7.Caption:=c;
end;
Utilizati Label1,Label2,Label4,Label6 si Label8 pentru a afisa explica-
tiile necesare astfel:
Label1.Caption='Numele Filei: '
Label2.Caption='Functii: '
Label4.Caption='Proceduri: '
Label6.Caption='Siruri analizate: '
Label8.Caption='Elementul cautat: '
Pentru a analiza fila de cod a proiectului curent introduceti numele
filei in Edit1.Text iar in Edit2.Text introduceti o serie oarecare de
caractere (diferita de '').
Tastati F9 si executati aplicatia.Proiectul va numara cate functii,cate
proceduri si cate siruri contine fila specificata in Edit1 si va afisa
in Memo2 elementul specificat in Edit2,ori de cate ori apare in program.
Puteti adauga orice fila de tip .pas sau .text (puteti verifica si filele
rulada1 sau recover.pas din directorul Prj121) in directorul curent,apoi
introduceti numele filei in Edit1 (in timpul executiei).
Un program de analiza este cu atat mai valoros cu cat este mai simplu
si mai exact(orice eroare de interpretare generaza ore de munca inutila).
-123- Concluzii
Acest manual contine un set de exercitii elementare,prin care puteti
lua contact cu principalele facilitati oferite de mediul de programare
Delphi.Manualul nu epuizeaza resursele programului,ci va faciliteaza doar
studiul altor carti sau articole de specialitate,care presupun ca notiu-
nile din acest manual sunt deja insusite.In manualul Help,in capitolul
VCL Object and Component Reference gasiti lista completa (alfabetica) a
tuturor obiectelor,functiilor,constantelor si variabilelor din program.
Prezentarea exhaustiva a acestor componente nu-si are rostul.Majoritatea
sunt parti componente ale obiectelor descrise,sau pot fi apelate si explo-
atate la fel ca si cele vizuale (care au fost prezentate in manual).
Daca nu va satisface nici unul dintre componentele existente,puteti
edita componente noi (mai ales pentru operatii prestabilite cu aplicatie
intr-un domeniu restrans).Cea mai simpla metoda este sa modificati unul
dintre obiectele existente prin adaugarea unor proprietati si metode noi.
Daca obiectul este valoros si va fi utilizat frecvent,puteti adauga in
lista de componente si obiectul nou editat.Deasemenea,puteti descarca din
reteaua Internet obiectele Delphi de care credeti ca aveti nevoie.Daca
doriti sa dezvoltati obiecte noi,care urmeaza sa fie utilizate si de alte
persoane,trebuie sa respectati toate conventiile de denumire si toate
standardele in vigoare pentru Object Pascal,Delphi,Win32,Internet etc.
Sursele de documentare referitoare la programul Delphi sunt extrem de
bogate si de diverse.O arhiva destul de completa (30.000 de articole) se
gaseste pe site-ul de internet www.3k Delphi Tips.
Delphi este un mediu de programare extrem de maleabil,adictiv.Puteti
utiliza acest mediu impreuna cu datele si programele dezvoltate anterior
in Pascal,C++,Assembler,Fox si VisualFox etc.Este preferabil totusi sa
utilizati acest mediu de programare pentru a dezvolta aplicatii modulare,
in care conceptul de baza este fundamentat pe obiecte care interactioneaza
intre ele.Puteti integra programele dezvoltate anterior intr-un obiect
distinct,astfel incat sa fie extrem de usor de utilizat si de catre alte
persoane.
Delphi exploateaza rapid si simplu,aproape toate tipurile de baze de
date si poate fi utilizat in aplicatii de calcul tabelar (inclusiv cu
file de tip Excel).
Delphi este un mediu ideal pentru dezvoltarea de bibiloteci de functii,
de unitati sau biblioteci cu alocare dinamica (DLL).In cazul in care
dezvoltati biblioteci DLL,trebuie sa acordati o atentie maxima modului in
care sunt emise si respectiv utilizate mesajele Windows,astfel incat sa
nu existe interferente intre obiectele care exploateaza acelasi mesaj
(exista riscul ca mesajul exploatat de obiectul d-voastra sa fie concurat
de un alt obiect care raspunde la acelasi mesaj,iar programul va stagna).
Pentru a evita acest fenomen,puteti utiliza un tampon de memorie inclus in
obiect,care pastreaza temporar toate mesajele receptionate.
Pentru dezvoltarea de programe cu linie de executie multifilara sunt
necesare notiuni de programare mai avansate.Fiacare linie de execuutie
(thread) trebuie sa fie ordonata intern prin functii declarate "private",
astfel incat sa nu interfereze cu celelalte linii de executie (Exemplu:
daca exploateaza acelasi mesaj,va trebui realizata cate o copie pentru
fiecare linie de executie).
Daca doriti mai multe informatii,Internet-ul va sta la dispozitie!
- S F A R S I T -
Dostları ilə paylaş: |
|
|