Pravidelní čtenáři před uvedením dnešního dílu už jistě tušili, co se chystá.
V průběhu let, v nichž seriál vychází, totiž vznikla tradice, které se dnes
přidržíme: každý padesátý díl seriálu je „bilanční“; obsahuje souhrn předchozího
obsahu a hypertextový obsah předchozích padesáti částí. Nejinak tomu bude i
dnes.
Stručný pohled do minulosti našeho seriálu
Jako v padesátém dílu a jako ve stém dílu, i dnes začneme trochou historie.
První díl tohoto seriálu na Živě vyšel dne 19. března 2001. V době vyjití tohoto
článku tedy máme za sebou čtyři roky vycházení článků popisujících jednotlivé
aspekty Delphi. Měli bychom však dodat, že v průběhu vydávání vznikly tři
oddychové časy.
Protože stopadesátidílný moloch není příliš šikovný na vyhledávání: z toho
důvodu věřím, že vám přijde vhod dnešní hypertextové shrnutí. Ve druhé části
článku tedy naleznete nadpisy a podrobné obsahy dílů 101 – 150 (obsah částí 1 až
50 je uveden v dílu číslo 50, obsah částí 51 až 100 je uveden v díle 100).
Přehled je hypertextový, to znamená, že pokud budete hledat zmíněný tisk,
snadno do přehledu nahlédnete a jedním klepnutím se přenesete na odpovídající
stránku. Věřím, že toto vylepšení uvítáte a že pro vás tento stopadesátý díl
bude zároveň jakýmsi portálem do našeho seriálu.
Poděkování
Jako tradičně, i dnes poděkuji těm, kteří věrně seriál už přes čtyři roky
sledují – jeho čtenářům.
Sto padesát dílů je ohromné množství; jen málo projektů se na takovou metu
dostane. Za to, že seriál stále vychází a že o něj stále někdo stojí, patří všem
čtenářům dík, stejně jako za četné maily, náměty, připomínky a dotazy. Vážím si
i všech emailů, které od vás dostanu a které obsahují třeba námět na příští
téma, kritickou připomínku nebo upřesnění některé zveřejněné informace. I když
třeba na konkrétní mail nestihnu odpovědět, vězte, že žádný nekončí v koši a že
nad všemi ideami přinejmenším popřemýšlím.
Budu rád, pokud budete svůj zájem projevovat i nadále; budu se i nadále těšit
na vaše náměty a připomínky.
Hypertextový odkaz předešlé padesátky
Nyní se pojďme podívat na samotný obsah dnešní části – na hypertextový odkaz
předešlých padesáti dílů. Klepnutím na nadpis článku si můžete článek přímo
otevřít.
Díl 101 –
operace drag & drop (táhni a pusť)
Drag and drop – co to je a k čemu to je
Operace tažení a upuštění položky v cílovém umístění
Více než jedna zdrojová a více než jedna cílová komponenta
Díl 104 –
další zjednodušení práce – komponenta ActionList
K čemu slouží komponenta ActionList
Možnost sdílení zdrojového kódu pro odezvy na více událostí
Práce s ActionListem
Praktická ukázka komponenty v aplikaci
Předdefinované akce
Vytvoření vlastní akce
Díl 105 –
pod povrch komponenty ActionList
Podrobnosti o používání komponenty ActionList
Jak používat ActionList – událost OnExecute komponenty ActionList
Další možnost – událost OnActionExecute objektu Application
Třetí možnost – událost OnExecute konkrétní akce
Jak určit původce akce – jak zjistit, která akce vlastně nastala
Co když akci neošetříme?
Přehled předdefinovaných akcí
Díl 106 –
zdroje (resources) systému Windows
Co jsou zdroje
Co je soubor se zdroji, kde ho hledat
Možné zdroje
Kdy a jak probíhá „svázání“ aplikace s jejími zdroji
Díl 107 –
druhy zdrojů (resources)
Co všechno může být uloženo ve zdrojích
Tabulka akcelerátorů
Bitmapy
Kurzory
Dialogové boxy
Rozšířené metasoubory
Písma (fonty)
Ikony
Nabídky
Řetězce
Verze aplikace
Díl 108 –
spočítejte si, kolik uspoříte
Finanční a matematické funkce v Delphi
Klasická funkce – FutureValue
Další funkce
Vytvoření ukázkové aplikace
Díl 109 –
vytváříme a používáme zdroje (resources) krok za krokem
Zdroje v Delphi
Jak pracovat se zdroji v Delphi
Integrovaná aplikace – Image Editor
Vytvoření souboru se zdroji
Aktualizace aplikace bez nutnosti změny jejího zdrojového kódu
Díl 110 –
různé jazykové verze aplikací: textové resources
Textové řetězce jakožto forma zdrojů
Vytvoření souboru s textovými řetězci – zdroji
Kompilace souboru
Vytvoření aplikace využívající textové zdroje
Vytvoření jiné jazykové verze aplikace bez nutnosti změny jejího
zdrojového kódu
Možné problémy
Díl 111 –
zdroje Windows: kurzory a bitmapy
Kurzory a bitmapy prakticky
Vytvoření aplikace používající uvedené zdroje
Načítání kurzorů
Funkce LoadCursor
Načítání bitmap
Funkce LoadBitmap
Díl 112 –
jak funguje překladač
Jak probíhá překlad
Co všechno musí dělat překladač
Do hlubin překladače
Jednotlivé kroky překladu – lexikální analýza, syntaktická analýza,
sémantická analýza
Další kroky – generování, optimalizace
Příklad překladu jednoduché konstrukce
Díl 113 –
překlad a vkládání souborů
Preprocesing a jeho fáze
Soubory DFM a jejich zpracování
Soubory PAS a jejich zpracování
Soubory DPR a jejich zpracování
Soubory INC a jejich zpracování
Díl 114 –
systémový zavaděč, možnosti překladu
Zavaděč – co to je a k čemu slouží
Relativní a absolutní paměťové adresy
Nastavení překladače v Delphi
Kontrola syntaxe
Díl 115 –
optimalizace programů
Prohlížíme obsah projektu – Project Manager
Překladač Delphi a jeho možnosti nastavení – první část přepínačů, záložka
Compiler
Díl 116 –
jak Delphi opravdu optimalizují?
Jak funguje optimalizátor v Delphi
Ukázka různých konstrukcí
Optimalizátor nám může zkomplikovat život
Optimalizátor optimalizuje jen proměnné, nic jiného nedělá
Díl 117 –
pozor na přetečení
Co je přetečení a jak k němu dojde
Nastavení překladače týkající se přetečení
Range checking
Je lepší zapnout nebo vypnout kontrolu rozsahu?
Díl 118 –
testování chyb při práci se soubory
Popis chyb při vstupně – výstupních operacích
Jak chyby vznikají
Jak lze na chyby reagovat
Program netestující chyby při práci se soubory
Testování chyb „postaru“ - IOResult
Testování chyb pomocí I/O checking
Vlastní ošetření chyb
Díl 119 –
přetečení trochu jinak
Přetečení a přepínač Overflow checking
Rozdíl mezi Range checking a Overflow checking
Díl 120 –
logické výrazy a operátory v Delphi
Přepínač Complete Boolean Eval
Zkrácené vyhodnocování logických výrazů
Jak lze zkrácené vyhodnocování použít
Jak nám může zkrácené vyhodnocování zkomplikovat život
Přehled logických operátorů v Delphi
Vyhodnocování logických výrazů
Pravdivost a nepravdivost logických výrazů
Díl 121 –
zkrácené vyhodnocování logických výrazů
Další informace o zkráceném vyhodnocování
Pravdivostní hodnoty výrazů a zkrácené vyhodnocování
Praktický příklad zkráceného vyhodnocování
Díl 122 – k
čemu je dobré úplné vyhodnocování?
Má někdy smysl vypnout zkrácené vyhodnocování?
Praktická ukázka úplného vyhodnocování
Díl 123 –
nastavení překladače: dokončení
Dokončení popisu překladače Delphi a možností jeho nastavení
Debugging a další přepínače
Procedura Assert
Díl 124 –
programování síťových aplikací: sockety poprvé
Co rozumíme pojmem „síťové aplikace“
Princip síťových aplikací
Jaké jsou možnosti vzájemné komunikace aplikací
Díl 125 –
serverová aplikace přes sockety
Praktický popis vytvoření jednoduchého síťového serveru
Blokující a neblokující spojení
Další možnosti nastavení síťové komunikace
TCP/IP komunikace, porty
Komponenty pro serverovou stranu aplikací
Události serverů
Díl 126 –
klientská aplikace přes sockety
Praktický popis vytvoření jednoduchého síťového klienta
Klient se umí připojit k serveru a poslat mu požadavek
Komponenty pro klientskou stranu aplikací
Události klientů
Komunikace se serverem
Díl 127 –
protokoly TCP/IP pro začátečníky
Podrobnosti o fungování protokolů TCP/IP
Dva hlavní komunikační protokoly – TCP a IP
Lokální softwarová smyčka, localhost, 127.0.0.1
DNS servery
Spojované služby
Díl 128 –
vše o socketech
Co je socket
Rozdíl mezi blokovaným a neblokovaným spojením
Jak si se sockety poradit v Delphi
Komponenty TCPServer a TCPClient
Přehled vytváření klientských aplikací v Delphi
Díl 129 –
klientská aplikace přes sockety od A do Z
ClientSocket a ServerSocket v Delphi 7
Jaké kroky je nutné provést při vytváření klientské aplikace v Delphi
Odesílání dat na server
Přijímání odpovědí ze serveru
Získávání informací o aktuálním spojení
Uzavření spojení
Díl 130 –
serverová aplikace přes sockety od A do Z
Jednotlivé kroky směřující k napsání funkčního serveru
Serverové komponenty
Specifikování portů
Poslouchání klientů
Připojování ke klientům
Zjišťování informací o spojení
Díl 131 –
serverová aplikace přes sockety od A do Z, dokončení
Popis rozdílu mezi blokujícím, neblokujícím, synchronním a asynchronním
spojení
Čtení ze socketů a zápis do socketů
Události serveru při poslouchání
Uzavření socketu
Díl 132 –
praktická ukázka socketů: jak si poradit s více zaslanými zprávami
Co si počít s vícenásobnými zprávami
Počet zpráv u příjemce není roven počtu zpráv odesilatele – co s tím?
Ukázkový klient a server
Díl 133 –
časový server prakticky
Problematika časového zpoždění při síťové komunikaci
Synchronizace
Christianův algoritmus
Díl 134 –
pod pokličku souborů MP3
Podstata MP3 komprese
Základní informace o empétrojkách
Metody používané při MP3 kompresi
Jak vyrobit empétrojku
Díl 135 –
první MP3 Player v Delphi
Ukázka vytvoření jednoduchého MP3 přehrávače v Delphi
Jak v Delphi zpracovávat empétrojky
Drobná vylepšení aplikace
MediaPlayer není dokonalý – možné problémy
Díl 136 –
ID3 tagy: co to je?
Jak obohatit hudební soubory o textové informace
Stručná historie ID3 tagů
Jaké jsou dostupné verze ID3 tagů
Co všechno dokáže ID3 tag uchovat
Díl 137 –
ID3 tagy prakticky
Vytvoření ukázkové aplikace zpracovávající ID3 tagy
Implementace ID3v1 tagů v Delphi
Čtení tagu z empétrojky
Díl 138 –
modifikace ID3 tagů v empétrojkách
Editace ID3 tagů
Jak pracovat s nekompatibilními typy řetězců
Řetězce, ukazatele na řetězce
Díl 139 –
vložte si do empétrojky fotku
Popis druhé verze tagů - ID3v2
Odlišnosti nové verze od předchozí
Silné stránky nové verze
Základní vlastnosti ID3c2 tagů
Díl 140 –
formát a vnitřní struktura ID3v2 tagů
Definice formátu tagu
Popis vnitřní struktury a složek tagu
Obecná struktura ID3v2 tagu, schéma
Díl 141 –
rozšířená hlavička, padding, patička ID3v2 tagu
Podrobný popis zmíněných tří sekcí tagu
Díl 142 –
ID3v2 tagy: hlavní součástí jsou datové rámce
Podrobný popis datových rámců ID3v2 tagu
Díl 143 –
rámce ID3v2 tagu: dokončení
Popis pořadí rámců
Formát časových údajů
Jazyk rámců
Díl 144 –
jak přinutit starý přehrávač, aby přehrával nové empétrojky?
Umístění tagu v souboru
Mechanismus unsynchronization
Díl 145 –
praktická implementace ID3v2 tagů
Co dělat, chceme-li naprogramovat aplikaci podporující ID3v2
Jaké hotové implementace a knihovny jsou k dispozici
Knihovna ID3v2 pro Delphi – stažení a instalace
Díl 146 –
editor ID3v2 tagů
Praktické vytvoření jednoduchého editoru ID3v2 tagů v Delphi
Načtení tagu, modifikace, opětovné uložení do souboru
Díl 147 –
MP3, ID3, ID3v2 – úplné dokončení
Dokončení implementace jednoduchého editoru
Sekce initialization a finalization pascalských programových jednotek
Díl 148 –
zastavujeme, ladíme a odvšivujeme
Integrovaný debugger Delphi
Body přerušení – breakpoints
Jaké druhy breakpointů existují
Jak breakpoint nastavit
Díl 149 –
body přerušení, které nic nepřerušují
Zajímavá možnost využití breakpointů
Breakpointy nemusí zastavit běh programu
Vytvoření ostré verze z ladicí verze beze změny zdrojáku
Díl 150 – hypertextová historie
Přehled a obsah předchozích 50 dílů
Čtenářská aplikace pro práci s tímto seriálem
Ještě předtím, než se pro dnešek rozloučíme, rád bych shrnul možnosti
prohlížení tohoto seriálu offline. Existuje několik možností.
Dále připomenu, že si kdykoliv můžete stáhnout skvěle zpracovanou offline
verzi seriálu vytvořenou panem RNDr. Petrem Brantem. Stahovat můžete přímo ze
stránek pana Branta, adresa je http://brant.wz.cz/.
Kromě této varianty pak nově máte ještě další možnost. Pan Pavel Polívka
vytvořil program, který po svém stažení a nainstalování dokáže stahovat a
spravovat všechny díly pro offline sledování a celou řadu dalších zajímavých a
užitečných činností. Program je opravdu velmi povedený, má hodně funkcí a všem
zájemcům o offline sledování seriálu jej doporučuji. Instalační soubory můžete
stáhnout z adresy projektu.
Poslední upozornění, kterého se ode mě dnes dočkáte, se ještě týká programu
pana Polívky. Na adrese http://diskuse-umime-to-s-delphi.wz.cz/index.php
najdete diskusní fórum, které obsahuje několik kategorií a v němž se můžete
vyjádřit jak ke kvalitě seriálu, tak i k požadavkům na výše uvedenou aplikaci.
Prostřednictvím tohoto fóra můžete kontaktovat jak autora programu, tak i mě a
ostatní čtenáře.
Přes řadu možností, které se vám nabízejí pro offline sledování seriálu bych
vás poprosil, abyste z pochopitelných důvodů četli co možná nejčastěji jeho
online verzi. Dostatečná čtenost je nejdůležitějším argumentem pro zachování
seriálu a jeho další zveřejňování na stránkách serveru Živě.
Na závěr
Závěrem mi nezbývá než dodat: doufám, že se ve zdraví sejdeme u dílu číslo
200!