p°edchozφ lekce (1.40) | obsah kurzu | nßsledujφcφ lekce (1.42) |
P°edpoklßdejme, ₧e po₧adujeme vytvo°it program, ve kterΘm budeme chtφt pou₧φt
proceduru, kterß vypφÜe do textovΘho v²stupnφho okna obsah n∞kolika zadan²ch
systΘmov²ch prom∞nn²ch. Vytvo°φme si proto nejprve b∞₧n²m zp∙sobem projekt, ve kterΘm
vytvo°φme hlavnφ program, ze kterΘho budeme volat proceduru umφst∞nou v externφm
programu. V programu otev°eme databßzi s cenφkem, provedeme skok na zßznam
s nßhodn²m Φφslem a umφstφme informace o zbo₧φ do systΘmov²ch prom∞nn²ch:
Sub Main()
SysVarClear 'zruÜφ systΘmovΘ prom∞nnΘ
If DbfUse("CENIK") then
'skok na nßhodn² zßznam
DbfGo(Random(DbfRecCount))
'vytvo°φme prom∞nnΘ s hodnotami z databßze
Call SysVarSet("cislo", DbfReadStr("CISLO"))
Call SysVarSet("nazev", DbfReadStr("NAZEV"))
Call SysVarSet("typ" , DbfReadStr("TYP"))
Call SysVarSet("dodav", DbfReadStr("DODAV"))
Call SysVarSet("cena" , DbfReadNum("CENA"))
'v externφm programu prom∞nnΘ vypφÜeme
Call Vypis
DbfUse("")
End If
End Sub
Dßle si vytvo°φme program, do kterΘho zapφÜeme procedury a funkce, kterΘ budeme chtφt
volat z hlavnφho programu. Vyberte proto volbu z menu Soubor/Nov² a vyberte v zßlo₧ce
'Program' ikonu s popisem 'Program BONANZA'. Vytvo°φ se prßzdn² program, kter² je
umφst∞n v editoru v samostatnΘ zßlo₧ce. VÜimn∞te si, ₧e se program umφstφ do Mana₧eru
projektu v jeho stromovΘ struktu°e obsahu projektu. Podrobn∞ji se s projektem ale
seznßmφme a₧ v nßsledujφcφ lekci. V nov∞ vytvo°enΘm programu zapφÜeme po₧adovanΘ
procedury a funkce, kterΘ budeme chtφt volat z nad°azenΘho programu. V naÜem
ukßzkovΘm p°φklad∞ vytvo°φme proceduru, kterß bude vypisovat obsah po₧adovan²ch
systΘmov²ch prom∞nn²ch. Volbou z menu Soubor/Ulo₧it ulo₧φme program na disk do
souboru, p°iΦem₧ budete po₧ßdßni systΘmem o zadßnφ jmΘna novΘho programu.
Sub Vypis()
ConsoleClear
Writeln("CISLO:" + SysVarGet("cislo"))
Writeln("NAZEV:" + SysVarGet("nazev"))
Writeln("DODAV:" + SysVarGet("dodav"))
Writeln("TYP :" + SysVarGet("typ"))
Writeln("CENA :" + IntToStr(SysVarGet("cena")))
SysVarShow
End Sub
Nynφ mßme v projektu umφst∞ny dva programy. V programu, kter² jsme vytvo°ili prvnφ
mßme umφst∞no volßnφ procedury, kterou jsme zapsali do druhΘho programu. Pokud mßte
v projektu umφst∞no n∞kolik program∙, bude spuÜt∞n v₧dy ten, kter² jste vytvo°ili jako prvnφ.
Zkuste proto program spustit a zkontrolovat, zda pracuje vÜe podle naÜich p°edpoklad∙.
Pokud jste si vytvß°eli program sami dle v²Üe uvedenΘho popisu, zjistφte, ₧e je nahlßÜena chyba, proto₧e nebyla nalezena procedura VYPIS. To je ale v po°ßdku, proto₧e jsme zatφm nedefinovali v hlavnφm programu mo₧nost pou₧itφ externφho programu, ve kterΘm je po₧adovanß procedura umφst∞na. To, ₧e je program s procedurou umφst∞n v projektu neznamenß, ₧e bude automaticky pou₧it. P°epn∞te se proto v editoru na hlavnφ program a zvolte z menu volbu Soubor/Definovat modul. Zobrazφ se seznam program∙ umφst∞n²ch v projektu, ze kter²ch m∙₧ete vybrat programy pro pou₧itφ pomocφ odkaz∙ z hlavnφho programu. V naÜem p°φpad∞ by se m∞l zobrazit program, ve kterΘm je definovßna procedura VYPIS pro v²pis obsahu zadan²ch systΘmov²ch prom∞nn²ch. Po odsouhlasenφ se uvede jmΘno externφho modulu v hlavnφm programu jako sdφlenΘho s hlavnφm programem.
JmΘna externφch modul∙ se uvßd∞jφ v₧dy na zaΦßtku programu jako poznßmka s textem
//USEUNIT s uvedenφm jmΘna externφho programu. ZaΦßtek programu bude proto nynφ
obsahovat nov² °ßdek:
'USEUNIT Sysvar_b
Pokud spustφte nynφ program, prob∞hne ji₧ vÜe v po°ßdku. Proto₧e nenalezl systΘm
proceduru VYPIS v hlavnφm programu, prohlΘdl si seznam nadefinovan²ch externφch
program∙ a po₧adovanou proceduru nalezl. Uveden²m zp∙sobem je mo₧nΘ doplnit do
vytvß°enΘ aplikace i dalÜφ externφ programy. V nßsledujφcφ lekci se seznßmφme s tφm, ₧e je
mo₧nΘ takto vytvß°et i rozsßhlejÜφ aplikace, kterΘ budou vyu₧φvat procedury a funkce
definovanΘ v externφch programech.
Pokud nejste zkuÜen² u₧ivatel, v ₧ßdnΘm p°φpad∞ do definice externφch modul∙ nezasahujte, ani neodstra≥ujte vßmi neznßmΘ automaticky za°azenΘ moduly. Mohlo by dojφt k chybnΘ Φinnosti programu. Definici modul∙ musφte takΘ ponechat na zaΦßtku programu.
Pokud jste zkuÜen² u₧ivatel systΘmu, m∙₧ete zßpis pou₧φvanΘho externφho programu doplnit do programu i p°φmo zßpisem v editoru bez nutnosti pou₧itφ v²Üe uvedenΘho zadßnφ pomocφ dialogovΘho boxu. Pokud si vÜak nejste jisti se sprßvnostφ zßpisu, zadßvejte pou₧φvanΘ externφ programy pouze uveden²m zp∙sobem.
UPOZORN╠N═:
P°i pou₧itφ externφch program∙ je vhodnΘ, aby byly v externφm programu uvedeny pouze
procedury a funkce bez uvedenφ podprogramu se jmΘnem Main. Je to proto, ₧e v p°φpad∞
nalezenφ uvedenΘho podprogramu je tento vykonßna jeÜt∞ p°ed spuÜt∞nφm hlavnφho
programu. Jednß se tedy o tzv. inicializaΦnφ Φßst programu. Zde je proto vhodnΘ provßd∞t
opravdu pouze poΦßteΦnφ nastavenφ bez v²konn²ch akcφ. Ty je nutnΘ uvΘst jako procedury,
kterΘ je potom mo₧nΘ aktivovat kdykoliv i z jin²ch modul∙ aplikace.
P°i pou₧φvßnφ externφch program∙ je vhodnΘ si uv∞domit, ve kterΘm okam₧iku se konkrΘtnφ Φßst programu provßdφ a jak² je postup kompilace programu. Nejprve se spustφ p°eklad hlavnφho programu. Na jeho poΦßtku jsou nalezeny definice externφch program∙. P°eklad programu je proto pozastaven a p°eklßdajφ se uvedenΘ externφ programy. NaΦφtß se text programu a vytvß°φ se seznam procedur a funkcφ, kterΘ je mo₧nΘ z programu pou₧φt. Pokud je nalezena v externφm programu inicializaΦnφ Φßst programu mimo podprogram Main, je vykonßna (jeÜt∞ p°ed spuÜt∞nφm hlavnφho programu). Takto jsou zpracovßny vÜechny zadanΘ externφ programy. A₧ potom se pokraΦuje v kompilaci hlavnφho programu, na jeho₧ konci je spuÜt∞na inicializaΦnφ Φßst hlavnφho programu uvedenß v podprogramu Main.
p°edchozφ lekce (1.40) | obsah kurzu | nßsledujφcφ lekce (1.42) |