Umíme to s Delphi, 5. díl – události, překlad, hledání chyb

Diskuze čtenářů k článku

Nico  |  20. 04. 2001 20:01

Chci všem začátečníkům, kteří teprve zjistili, že existuje nejaký programovací jazyk a navíc ani neumí anglicky, jako já, a chcou zvládnout programovat v Delphi, dopučit výbornou knihu "Začínáme programovat v Delphi (podrobný průvodce začínajícího uživatele)" vydala Grada, autor Slavoj Písek; v roce 2000. Kniha nejen, že Vás naučí programovat, ale i obsahuje popis programu Delphi 5, takže nemusíte pořád hledat v anglicko-českém slovníků, každá kapitola je doplněna otázkami k procvičení a na konci knihy je klíč s řešením. Podobá se dobré učebnici.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Radek  |  20. 04. 2001 20:01

Proměné I a J jsou lokální proměné, vytvořené pouze na dobu běhu procedury.
Protože nemají žádnou vazbu na nějakou globální proměnou, nebo proměnou nějakého objektu, jejich nastavování nemůže nijak ovlivnit běh zbylého kódu aplikace. Kompilátor to pozná a odmítne tam umístit breakpoint. Bylo by dobré zmínit modré puntíky, které se po překladu objeví na levé straně okna se zobrazeným kódem u každého řádku, který se bude skutečně vykonávat a kam tedy má smysl umísťovat breakpoint.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Václav Kadlec  |  20. 04. 2001 20:01

Já to věděl, já to tušil, že tu ta odpověď bude hned první den, ale takhle rychle jsem to skutečně nečekal!!!

Souhlasím  |  Nesouhlasím  |  Odpovědět
FiLip  |  20. 04. 2001 20:01

Hledate v tom slozitosti. Breakpoint tam nejde umistit proto, ze kompilator provadi optimalizaci kodu. Cely cyklus je zbytecny, proto se nahradi pouze prirazenim vysledne hodnoty. Staci v Project -> Options -> Compiler -> Code generation odskrtnout polozku Optimization a mate breakpoitny vsude

Souhlasím  |  Nesouhlasím  |  Odpovědět
Radek  |  20. 04. 2001 20:01

Fakt ??? Řekl bych, že do var j se při zap.optimalizaci nic nepřiřazuje - po optimalizaci z toho zbyde

for i := 1 to 10 do ; a hodnota j nedostane vůbec žádnou hodnotu (asi bude 0, protože při startu se vše automat. inicializuje na 0 (evt. nil), ale je to jedno, protože jakmile se přejde přes end; procedury, proměná j přestane existovat.

Když přidáte za cyklus tyhle dva řádky

showmessage(inttostr(i));
showmessage(inttostr(j));

na zobrazení i a j budou také modré puntíky všude i při zapnuté optimalizaci - protože hodnoty i a j opravdu potřebujete (zde zobrazit), takže se kód opravdu vykoná.

Takže ne, že by se to vyčíslovalo dopředu při kompilaci - to se snad děje pouze v případě konstant. Místo toho jednoduchého cyklu tam mohl být stostránkový vzorec - také by se nepřiřadila žádná výsledná hodnota - kód by se nevygeneroval, dokud by se výsledek někde nechtěl použít.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Jaroslav Bartos  |  20. 04. 2001 20:01

No, dostal sem se na net az dnes, byl sem sluzebne mimo, ale rekl bych, ze pri optimalizaci se ten kod vynecha uplne, protoze neme na nic vliv, jakmile tam date showmessage, tak ten cyklus ma smysl, a kompilator ho provede.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Václav Kadlec  |  20. 04. 2001 20:01

Ano, správná odpověď se tu objevila hned několikrát; shrnuta bude navíc v příštím dílu. Je vidět, že díky našemu seriálu jsou znalosti českého národa o Delphi již takřka bezbřehé .

Souhlasím  |  Nesouhlasím  |  Odpovědět
FiLip  |  20. 04. 2001 20:01

Ja vim proc ten breakpoint nezabere No ... asi to bude tim, ze uz v Delphach nejakou tu chvili delam.

Mensi napoveda: Zamyslete se nad tim "programatorsky". Nehledejte zadne zaludnosti v jazyce, spis v Delphach

Souhlasím  |  Nesouhlasím  |  Odpovědět
Zasílat názory e-mailem: Zasílat názory Můj názor