Titlul documentului


pentru a verifica si filtra datele preluate,pentru a schimba formatul sau



Yüklə 1,42 Mb.
səhifə16/16
tarix03.01.2019
ölçüsü1,42 Mb.
#89992
1   ...   8   9   10   11   12   13   14   15   16

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 -
Yüklə 1,42 Mb.

Dostları ilə paylaş:
1   ...   8   9   10   11   12   13   14   15   16




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin