Professional Documents
Culture Documents
Delphi
Delphi
3. STRUKTURA DELPHIJA................................................................6
3.1. Elementi Delphija ............................................................................................... 6
3.2. Delphi kao alatka za vizuelno programiranje ..................................................... 8
3.3. Datoteke koje Delphi generie ............................................................................ 9
4. BAZE PODATAKA........................................................................11
4.1. Potreba za standardom pri radu sa bazama podataka........................................ 11
4.2. Terminologija baza podatka.............................................................................. 11
4.3. Komponente za rad sa bazama podataka .......................................................... 13
4.3.1. TABLE I QUERY ................................................................................................15
4.3.1.1.
Kretanje kroz tabelu.......................................................................17
4.3.1.2.
Odreivanje sadraja polja ............................................................17
4.3.1.3.
Pretraivanje tabele........................................................................17
4.3.1.4.
Promena vrednosti polja ................................................................18
4.3.1.5.
Master - detail relacija ...................................................................19
4.3.2. FIELD KOMPONENTA ........................................................................................20
4.3.3. DATABASE GRID..............................................................................................21
5. OPIS PROBLEMA..........................................................................25
5.1. ZADATAK ....................................................................................................... 25
5.2. OBJANJENJE STRUKTURE PROGRAMA ................................................. 25
5.2.1. FORMA - UNOS ARTIKLA..................................................................................26
5.2.2. FORMA ZA UNOS ULAZNOG NALOGA ...............................................................28
5.2.3. FORMA ZA PREGLED ZADUENJA.....................................................................30
1. PROGRAMSKI JEZICI
1.1. Razvoj programskih jezika
Programski jezik predstavlja notaciju namenjenu izraavanju algoritma na
nain koji moe razumeti i izvriti raunar. To je skup simbola sa zadatim
pravilima formiranja od tih simbola pravilnih konstrukcija programskih jezika.
Danas postoji nekoliko stotina razliitih programskih jezika. Dosadanji razvoj
programskih jezika moemo podeliti na sledei nain :
1. Mainski jezici
2. Simboliki mainski jezici
3. Proceduralni programski jezici
4. Neproceduralni programski jezici
5. Objektno orjentisani jezici
6. Jezici vetake inteligencije
Najelementarniji programski jezik je interni jezik raunara, tzv. mainski jezik.
On je izgraen nad binarnom azbukom. Svaka mainska naredba predstavlja
binarni kod koji raunar moe da prepozna i izvri.
Simboliki mainski jezik je nastao iz mainskog zamenom koda operacije
simbolikim imenima, jo se zove i mainski orjentisan jezik ili asembler.
Proceduralni programski jezici omoguavaju opis algoritma na mnogo
prirodniji i jednostavniji nain u poreenju sa simbolikim mainskim jezicima.
To su jezici nezavisni od maine i nain zadavanja algoritma je blizak nainu
izraavanja ljudi.
Neproceduralni programski jezici omoguavaju pisanje programa na znatno
veem nivou apstrakcije, teei ka opisnim formalizacijama algoritama
proirenjem standarnih operatora kompleksnim operatorima. Ovi jezici
specificiraju ta treba uraditi umesto zadavanja kako to treba uraditi, pa se
nazivaju i jezici vrlo visokog nivoa.
Objektno orjentisani jezici zasnivaju se na objektima. Objekat ili klasa sadre
podatke i operacije koje se vre nad tim podacima. Do sada su, u prethodnim
opisima programskih jezika, podaci i operacije koje se vre nad tim podacima bili
razdvojeni. Objekat je slian strukturi u C-u ili recordu u Pascalu, ali sa dodatkom
procedura i funkcija koje obrauju definisane podatke. Ideja je da se napravi
klasa koja neto radi i da mi tu klasu moemo koristi u svojim programima, ali da
neznamo kako ona radi i bez mogunosti da utiemo na to.
Na primer: Imamo klasu Mojstring koja ima promenljivu tekst i funkcije
VratiDuinuTeksta, PretvoriUVelikaslova, PretvoriUMalaslova. (sledi definicija
klase u Delphiju)
type
TMojString = class(TString)
private // Private declarations
// ovde je def. privatnih procedura i prom. koje ne moemo koristiti van
klase
2
Znai
koristimo
funkciju
VratiDuinuNiza
i
proceduru
PretvoriUVelikaSlova a da ne znamo kako one rade. Bitan nam je samo rezultat.
Jezici vetake inteligencije su u fazi razvoja. Osnovu za ove jezike ine
funkcionalni jezik lisp, logiki jezik prolog i drugi jezici vetake inteligencije. To
su jezici koji e omoguiti predstavljanje znanja i deduktivno zakljuivanje na tom
znanju.
3. STRUKTURA DELPHIJA
3.1. Elementi Delphija
Kada se startuje Delphi, otvara se nekoliko prozora razliite namene pomou
kojih se gradi aplikacija. To su:
Glavni prozor Delphija -Ovaj manji prozor je uvek smeten pri vrhu ekrana.
Pomou njega se podeavaju parametri programa, organizuju se alati za rad i vri
se kompajliranje (generisanje izvrnog koda). Svi ostali elementi sa kojima se radi
su sinhronizovani pod kontrolom ovog glavnog prozora. Na njemu se nalaze
sledei elementi:
.bpg datoteke Borland Project Group datoteke, koje mogu pamtiti grupe
projekata, u stvari su prikrivene tekstualne datoteke naredbi komandne linije
9
module.
.dfm datoteke
Ove datoteke sadre tekstualni opis formi.
10
4. BAZE PODATAKA
4.1. Potreba za standardom pri radu sa bazama podataka
U ranim danima PC-a, programi koji su radili sa bazama podataka, pisani su da
bi radili na jednom raunaru i podravali su samo jednu bazu podataka. Poto je
tada PC bio na niskom stadijumu razvoja, (veina aplikacija je i dalje bila napisana
za vee raunare) baze podataka su retko, ako su uopte i bile menjane. Ovo je
zadovoljavalo potrebe dugi niz godina. Meutim kako je sve vie i vie kompanija
prihvatalo PC kao platformu na kojoj e raditi njen softver, javilo se nekoliko
problema koji nisu mogli biti efikasno reeni bez postojanja standarda :
BatchMove
Database
DataSource
DBChart
DBCheckBox,
DBComboBox,DBEdi
t,
DBImage,DBListBox,
DBMemo,
DBRadioGroup,
DBRichEdit
Skup redova koji se mogu pomerati i od kojih svaki
DBCtrlGrid
DBGrid
DBNavigator
Query
Session
StoredProc
Table
UpdateSQL
IndexName
IndexDefs
IndexFieldCount
UpdateMode
CashedUpdates
AutoCalcFields
Exclusive
Filter
Filtered
MasterSource
MasterFields
ReadOnly
SQL
Procedura MoveBy vri pomeranje za zadati broj slogova unapred ili unazad
Primer:
tKupac.MoveBy (-3)
postavlja slog koji se nalazi 3 mesta pre tekueg za novi tekui slog.
4.3.1.2. Odreivanje sadraja polja
Polja su u tabeli predstavljena nizom TField komponenti. Ovaj niz je smeten u
Field svojstvu tako da se do vrednosti odreenog polja moe doi navoenjem
tKupac.Fields(n).Value, pri emu je n redni broj polja u tabeli. Umesto rednog
broja za odreivanje polja moe se koristiti naziv polja upotrebom metode
FieldByName:
tKupac.FieldByName(NazivPolja).Value:=vrednost
Ako se umesto metode Edit upotrebi metoda Insert, nee biti promenjen
tekui slog ve e se umetnuti novi slog sa zadatim vrednostima ispred njega.
Posle izvrenja metode Post, tabela koja je bila u Edit ili Insert stanju vraa se u
osnovno Browse stanje.
Ako se umesto metode Edit upotrebi metoda Append, nee biti promenjen
tekui slog ve e se umetnuti novi slog sa zadatim vrednostima na kraju tabele.
Posle izvrenja metode Post, tabela koja je bila u Edit ili Insert stanju vraa se u
osnovno Browse stanje.
Metoda Cancel, ako se izvri pre konane potvrde metodom Post, ukida sve
promene tekueg sloga i postavlja tabelu u Browse stanje.
Primer dodatne provere pri upisu od strane programa:
Procedure Form1. BtnSnimiClick (Sender:TObject);
begin
// deo koda gde se poljima dodeljuju vrednosti
If
MessageDlg
(Da
li
elite
podatke,mtQuestion,mbOk,mbNo],0)=mrOk
then Table1.Post
else Table1.Cancel;
end;
da
upiete
Ako elimo da se nova vrednost sloga upie, treba da pritisnemo taster OK.
Tabela se u svakom trenutku nalazi u jednom od stanja definisanim svojstvom
State. Najea su :
18
dsInactive
dsBrowse
dsEdit
dsInsert
dsSetKey
dsFilter
dsOpening
dsCalcFields
19
tRoba je u ovom sluaju objekat tipa TTable koji predstavlja tabelu Roba.
Svojstvo FieldByName vraa field zadatog naziva. Svojstvo AsString pretvara
prodajnu cenu (tipa real) u itljivi string, koji se moe ispisati u edit boksu Edit2.
20
Currency
DataSet
DataSize
DataType
Title
DisplayText
DispalyWidth
EditMask
FieldName
Index
CurValue
ReadOnly
end;
Odreuje da li se sadraj polja prikazuje kao
novana vrednost.
Table ili query komponenta kojoj field pristupa.
Veliina podatka u bajtovima.
Tip podataka.
Natpis koji se ispisuje kao naziv kolone kod
korienja Database grid-a.
String koji se ispisuje u database komponenti.
irina polja (u broju karaktera) koji se koristi da
odredi irinu elije u sluaju korienja grid
komponenti.
Maska koja se koristi za unos sadraja preko
database komponenti. Moemo napraviti masku za
unos datuma, celog broja, samo slova, samo broj sa
odreenim brojem cifara, novano polje itd..
Naziv polja u tabeli.
Redni broj polja u tabeli, odnosno u nizu field
objekata.
Trenutna vrednost polja
Odreuje da li se sadaj polja moe samo itati.
22
23
BDE je dosta brz. Evo nekih poreenja koje sam uspeo da nabavim (tabela 1 i
tabela 2).
Za poreenje korienja je tabela koja sadri polja : Ime, prezime, telefonski broj i
adresu.
Telefon je integer (celobrojnog) tipa a sva ostala polja su character (tekstualnog)
tipa.
Broj
slogov
a
Delph
i
VB
Delphi
VB
Delphi
VB
Delphi
VB
Upis
Upi
s
itanje
itanje
Sortiranje
Sortiranj
e
Ukupno
Ukupn
o
100
1000
16
70
23
22
23
115
2000
33
141
12
46
84
49
271
3000
50
227
17
69
189
75
485
4000
67
297
23
77
15
294
105
668
Tabela 1. Poreenje brzine Visual Basica i Delphija pri radu sa bazama podataka
Operacija
Delphi
PowerBuilder
4.6
70.9
Upis sloga
1.4
1.3
3.0
6.2
1.1
1.5
Auriranje sloga
1.5
1.1
24
5. OPIS PROBLEMA
5.1. ZADATAK
U praktinom delu rada projektovana je Windows aplikacija razvijena u Delphi
okruenju, koja praktino realizuje prethodno opisani problem rada sa bazama
podataka. Zadatak je bio realizovati datu aplikaciju koja radi sa bazama podataka
na lokalnom disku i koja e obuhvatiti zahteve kao to su unos podataka preko
maske za unos, auriranje baza podataka, traenje kroz bazu, pregled i tampanje
izvetaja. Jedinstveni direktorijum gde se tabele nalaze, definisan je preko aliasa
'diplomski' u programu BDE Configuration Utility.
Korisnik ne mora da poznaje strukture tabela, mada ima mogunost njihovog
pregleda.
Aplikacija se koristi se za voenje evidencije artikala u nekoj firmi.
To bi u najkraim crtama bio opis aplikacije.
Stanje robe na zalihama (ime arikla, koliina, nabavna cena, prodajna cena,
naziv dobavljaa, ambalaa (pivska, sok, kisela voda,...), tip artikla (npr.
slatkii, vina, rakije,...),
25
FieldByName('Kolicina').AsFloat:=0;
FieldByName('NabCena').AsFloat:=StrToFloat(EditNabCena.Text);
FieldByName('ProdCena').AsFloat:=StrToFloat(EditProdCena.Text);
FieldByName('Dobavljac').AsString:=Trim(ComboBoxDobavljac.Text);
FieldByName('Ambalaza').AsString:=Trim(ComboBoxAmbalaza.Text);
FieldByName('ImeTipa').AsString:=Trim(UpperCase(ComboBoxTip.Text));
Post; // upis u bazu
ObrisiEdite; //brisanje svih podataka iz vizuelnih komponenti koje smo
uneli
end
else
MessageDlg('Unesite
ime
robe
i
ime
dobavljaca',mtInformation,mbOk],0);
end;
Tip
Opis polja
Character 30
Character 3
Number
Number
Number
Character 30
Character 15
Character 15
Naziv artikla
Jedinica mere (fla, kom, lit,...)
Nabavna cena artikla
Prodajna cena artikla
Stanje artikla na lageru
Ime dobavljaa datog artikla
Tip artikla : Slatki, pivo, rakija,...
Vrsta ambalae : Kisela voda, pivo,
sok,...
27
15
Date
Datum_pl
Date
Datum
stvaranja
naloga
Datum kada nalog
stie za naplatu
28
Naziv
Character
15
Ime dobavljaa
NabCena
15
Character
30
Number
Koliina
Number
ImeRobe
Naziv artikla
Nabavna
cena artikla
Koliina koju
smo kupili
29
Na sledeoj strani sledi deo koda koji formira SQL upit za prikaz podataka.
Ovaj deo koda se izvrava kada pritisnemo dugme Pokai.
30
and
31
32
6. TA JE POTREBNO ZA DISTRIBUIRANJE
APLIKACIJE?
Sve to je potrebno za distribuiranje jedne Delphi aplikacije je .EXE datoteka,
direktorijum u kome se nalazi baza podataka, i instaliran BDE na odredinoj
maini.
to se tie pravljenja instalacije programa, uz Delphi se dobija program
InstallShield Express pomou kojeg moemo napraviti instalaciju programa i
ukljuiti i BDE. InstallShield zna koje datoteke su potrebne za instalaciju BDE-a,
pa je taj deo posla automatski, a mi samo treba da ukljuimo .EXE fajl i
direktorijum sa bazom podataka i definiemo alijas Diplomski koji e pokazivati
na bazu podataka. Nakon toga imamo napravljen program Setup.exe i jo par
datoteka koji nam predstavlja instalaciju naeg programa.
33
7. ZAKLJUAK
U prvom delu rada je dat kratak opis programskog jezika Delphi, to je uvodno
poglavlje za drugi deo rada koji se odnosi na rad sa bazama podataka. Kod
prouavanja drugog dela rada potrebno je posedovati odgovarajue znanje, kako o
programskom jeziku Delphi i pisanju prostijih aplikacija u njemu, tako i o
objektnom programiranju uopte.
Praktina implementacija je izraena u Delphi 5.0 razvojnom okruenju, koje
se veoma dobro pokazalo za realizaciju ove aplikacije.
Model ove aplikacije je primenjiv kod realizacije mnogih problema koji se
oslanjaju na rad sa lokalnim bazama podataka iji su podaci tabelarno
organizovani, a to je najee kod voenja nekih evidencija.
Proirenje ovog modela programa moe se ostvariti dodatnim procedurama i
protokolima koji bi omoguili komunikaciju sa udaljenim serverom na kome je
smetena baza podataka.
to se tie zauzea mesta na hard disku istestirao sam program i to tako to sam
uneo 10000 ulaznih i 10000 izlaznih naloga u proseku sa 4 stavke po nalogu i
dobio sledei rezultat :
Ime tabele
Ulaz
Ulaz1
Izlaz
Izlaz1
10,000
40,000
10,000
40,000
1.484,00 KB
2.860,00 KB
1.484,00 KB
2.860,00 KB
8.688,00 KB
8. Literatura
-
35