11.07.2015 Views

Untitled - Vitajte na stránkach www.einsty.hostujem.sk

Untitled - Vitajte na stránkach www.einsty.hostujem.sk

Untitled - Vitajte na stránkach www.einsty.hostujem.sk

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

P R O G R A M U J E M Enos SQL <strong>sk</strong>utoène obsahuje nesprávny re azec (pozri okno Result), ktorý je prístupnýv poli New Value, a teda ho môžeme opravi (<strong>na</strong> obrázku vidíme opravenú verziu). Ak terazstlaèíme tlaèidlo Modify, zmeny sa premietnu do programu a my sme si ušetrili jednukompiláciu. Samozrejme, túto chybu bude potrebné v zdrojovom kóde tak èi tak opravi ,takže sa vám možno celý postup zdal zbytoèný. Môžete si však by istí, že pri písaníväèších programov vám funkcia Evaluate/Modify neraz príde vhod.Náš program je teda odladený, body prerušenia preto môžeme odstráni . Ladenie väèšíchaplikácií je však komplikovanejšie, preto neraz zistíme, že program predsa len nefunguje tak,ako by mal, a body prerušenia musia spä <strong>na</strong> svoje miesto. Ak si nie ste celkom istí, že programbude pracova správne, body prerušenia neodstraòujte, iba ich deaktivujte. To jemožné urobi prostredníctvom kontextového menu v okne Breakpoint List.Medzi zaujímavé vlastnosti bodu prerušenia patrí to, že nemusí by aktívny vždy, môžesa aktivova sám vo chvíli, keï je splnená urèitá podmienka. Práve túto schopnos debuggerasi ukážeme <strong>na</strong> druhom ukážkovom programe. Ten bude využíva komponentObr. 6TQuery, <strong>na</strong> rozdiel od predchádzajúceho príkladu však bude obsahova trošku viac kódu,pretože jeho úlohou bude zisti zoz<strong>na</strong>m polí komponentu TQuery a zobrazi ho v komponenteTListBox. Samozrejme, aj tento program bude obsahova chybu.Pôvodný kód predchádzajúceho programu odstránime a <strong>na</strong>hradíme ho novým. Na formulárpridáme komponent typu TListBox, ktorý <strong>na</strong>zveme Polia. Vlastnos SQL komponentuTQuery bude obsahova príkazselect * from animalsSamotný kód, ktorého úlohou bude <strong>na</strong>èíta zoz<strong>na</strong>m polí, má <strong>na</strong>sledujúcu podobu:procedure TForm1.FirstBtnClick(Sender: TObject);var i:integer;beginQuery.Close;Query.Open;Polia.Items.Clear;for i :=0 to Query.FieldCount doPolia.Items.Add(Query.Fields[i].FieldName);end;Po spustení programu sa komponent TListBox síce <strong>na</strong>plní, no <strong>na</strong> konci cyklu vzniknevýnimka „List index out of bounds (5)“. Èíslo 5 v zátvorke je neklamným z<strong>na</strong>mením toho,že problém <strong>na</strong>stane pri piatom prechode cyklom. Zrejme už tušíte, ktorý riadok budepríèinou vzniku výnimky. Našu teóriu si však musíme overi , preto umiestnime bod prerušenia<strong>na</strong> predposledný riadok. Mimochodom, všimnite si, že riadok zaèí<strong>na</strong>júci sa cyklomfor je rozdelený <strong>na</strong> dve èasti, prièom kód sa generuje pre každú z nich (t. j. aj prvý, ajdruhý riadok majú v ¾avej èasti ok<strong>na</strong> editora bodku). V tomto prípade riadok musí byrozdelený, pretože i<strong>na</strong>k by bod prerušenia s podmienkou nefungoval. Po zaradení boduprerušenia sa presunieme do ok<strong>na</strong> Breakpoint List, kde z kontextového menu vyberiemepoložku Properties. Zobrazí sa nám dialógové okno, ktoré vyplníme pod¾a obrázka è. 5.Presnejšie povedané, vyplníme iba riadok Condition, pretože Delphi ostatné položkyvyplní za nás, a následne stlaèíme tlaèidlo Modify. Po týchto úpravách sa nám beh programupreruší, len èo premenná i <strong>na</strong>dobudne hodnotu 5. Potvrdila sa teda <strong>na</strong>ša teória,že problémy spôsobil predposledný riadok, cyklus má totiž vyzera takto:for i :=0 to Query.FieldCount-1 doPolia.Items.Add(Query.Fields[i].FieldName);Príkaz AssertTým z vás, ktorí programovali v jazyku C++, akiste netreba príkaz assert osobitne predstavova. Ide o príkaz, ktorý preberá ako parameter výraz typu boolean. Ak je hodnotavýrazu true, nestane sa niè, ak však výraz <strong>na</strong>dobudne hodnotu false, vznikne výnimka„Assertion failure“. Aby vám však tento príkaz fungoval, musíte ma v <strong>na</strong>staveniachDelphi zaškrtnutú vo¾bu Assertions.Ak patríte alebo ste patrili medzi náruživých hráèov, ktorí „hltali“ každú demoverziuhry, je celkom pravdepodobné, že ste sa s týmto príkazom už stretli. Ja som sa s nímdostal prvýkrát do kontaktu niekedy okolo roku 1994, keï som hral demoverziu DarkForces. Veselo si chodím, strie¾am zloduchov a zrazu èier<strong>na</strong> obrazovka. Najprv som simyslel, že „spadol“ DOS4G/W (extender, ktorý hra používala), no potom som si preèítalchybové hlásenie, ktoré znelo „Assertion failed“. Dokonca bol <strong>na</strong> obrazovke vypísaný ajnázov C súboru spolu s riadkom, kde problém <strong>na</strong>stal (žia¾, ani názov súboru, ani èísloriadka si už nepamätám). Druhý kontakt bol iba nepriamy: v istom nemenovanom hernomèasopise sa istý èitate¾ s ažoval, že mu istá hra neustále padala a vypisovala nieèoako „Assertion failure“. Problém vyriešil až <strong>na</strong>jnovší patch. Ako vidíme, tento príkaz sapoužíva pomerne èasto, preto by sme sa ho mali <strong>na</strong>uèi používa aj my.Vrá me sa však spä k pôvodnej téme. Hoci by sa mohlo zda , že príkaz assert jemožné <strong>na</strong>hradi príkazom typuif Variable=true then....nie je to celkom tak. Príkaz Assert totiž nevypisuje iba hlásenie, ale aj presné èíslo riadkaa názov súboru, ktorý výnimku spôsobil. Najjednoduchší spôsob, ako si príkaz vy<strong>sk</strong>úša ,je takýto:procedure TForm1.Button1Click(Sender: TObject);beginAssert(false);end;Tento riadok spôsobí zobrazenie chybového hlásenia, ktoré vidíme <strong>na</strong> obrázku èíslo 6.Praktické využitie tohto príkazu závisí predovšetkým od vás. Ja osobne som ho zaèalpoužíva , keï som pracoval <strong>na</strong> jednom väèšom programe. Obsahoval viacero databáz,prièom kód <strong>na</strong> urèitom mieste programu databázu zatvoril, v dôsledku èoho som potommusel trpie hlásenia typu „Cannot perform this operation on a closed dataset“. Riadok,ktorý databázu ilegálne zatváral, som <strong>na</strong>šiel práve prostredníctvom príkazu assert: jednoduchosom viacero týchto príkazov rozmiestnil okolo miesta problému a túto „sluèku“ som postupnezužoval. H¾adaný riadok sa mi <strong>na</strong>koniec podarilo nájs a chybu odstráni .NabudúceNabudúce budeme pokraèova v rozoberaní problematiky ladenia aplikácií. Povieme si,ako nám pri ladení môžu by užitoèné výnimky, a ukážeme si možnosti ladenia v Delphi 5.Dovtedy vám prajem ve¾a úspechov pri „vychytávaní múch“ vo vašich programoch.n Ivan Zernovác ml.PREDPLATNÉ PC REVUE NA ROK 2001n Stáli predplatitelia (súkromné osoby aj firmy), ktorí mali èasopis predplatený v <strong>na</strong>šom vydavate¾stvePERFEKT (nie v iných distribuèných spoloènostiach), už nemusia posiela novú objednávku.Spolu s novembrovým èíslom dostali aj poštovú poukážku (súkromné osoby), resp. s januárovým èíslomfaktúru (firmy) <strong>na</strong> zaplatenie predplatného <strong>na</strong> rok 2001. Pokia¾ chcete by informovaní o stavevybavovania vašej objednávky, môžete <strong>na</strong> zadnú stranu zloženky v èasti „správa pre prijímate¾a“uvies vašu e-mailovú adresu. Kto by z nejakého dôvodu poštovú poukážku nedostal, prosím, vyžiadajtesi ju <strong>na</strong> <strong>na</strong>šom oddelení predplatného (tel.: 07/524 99 783, e-mail: predplatne@pcrevue.<strong>sk</strong>).n Noví predplatitelia si môžu objed<strong>na</strong> predplatné <strong>na</strong> rok 2001 prostredníctvom objednávkovéhokupónu vloženého v èasopise. Objednávky prijímame poštou <strong>na</strong> adrese redakcie, faxom <strong>na</strong> è. 07/52499788, mailom <strong>na</strong> adrese: predplatne@pcrevue.<strong>sk</strong> alebo cez web: <strong>www</strong>.pcrevue.<strong>sk</strong>. Do jednéhotýždòa od prijatia objednávky vám zašleme poštovú poukážku. Firmy a právnické osoby dostanú zaèiatkomjanuára faktúru, ktorú treba <strong>na</strong>jne<strong>sk</strong>ôr do 19. 1. 2001 uhradi . Ak do tohto termínunedostaneme vašu platbu, posielanie PC REVUE vám pozastavíme.n Upozornenie: Upozoròujeme predplatite¾ov, aby si vo vlastnom záujme objednávali predplatnéPC REVUE cez <strong>na</strong>šu redakciu, resp. cez <strong>na</strong>še vydavate¾stvo Perfekt, a nie cez PrNS èi cez iné distribuènéspoloènosti. Okrem z¾avnenej predplatite¾<strong>sk</strong>ej ceny, ktorú dostanete iba u nás, tak zí<strong>sk</strong>ateaj možnos objed<strong>na</strong>nia si PC REVUE spolu s CD.n Platby: Zloženku <strong>na</strong> predplatné <strong>na</strong> rok 2001 treba uhradi do 15. 12. 2000. Firmy a právnickéosoby dostanú faktúru, ktorú treba uhradi <strong>na</strong>jne<strong>sk</strong>ôr do 19. 1. 2001.S platbou neèakajte, objed<strong>na</strong>né výtlaèky zasielame až po prijatí platby. Uzávierka objed<strong>na</strong>ných azaplatených výtlaèkov je vždy 14 dní pred expedíciou nového èísla. Pri one<strong>sk</strong>orenej úhradenemôžeme zaruèi doposlanie predchádzajúcich èísel èasopisu, pretože náklad objednávame pod¾a<strong>sk</strong>utoèných objednávok.n Z¾avnené predplatné (študenti, dôchodcovia) si môžu nárokova tí, ktorí <strong>na</strong> adresu redakciezaslali potvrdenie o návšteve školy, resp. o poberaní dôchodku.n 4×CDR: Od roku 2001 bude PCR vychádza 4× do roka s prílohou CD REVUE. Preto odteraz budemožné objed<strong>na</strong> si PC REVUE aj spolu s CD.Ceny PC REVUE <strong>na</strong> rok 2001bez CD s CDVýtlaèok v stánku 49 Sk 95 SkPredplatné celoroèné 444 Sk 624 Sk 3 výtlaèky zadarmo!Predplatné celoroèné z¾avnené 396 Sk 576 Sk 4 výtlaèky zadarmo!Cenu zvoleného predplatného vpíšte do okienka <strong>na</strong> vašej poštovej poukážke.Za 12 èísel PCR v stánku by ste zaplatili 588 Sk. Jeho predplatenímzí<strong>sk</strong>ate v prípade riadneho predplatného vlastne 3 výtlaèky zadarmo a v prípade z¾avnenéhodokonca 4 výtlaèky zadarmo!12/2000 PC REVUE 119

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!