Bingo. Ačkoliv je reklama důležitá, potřeba spánku ji jasně rompuje. Takže už asi moc nenapíšu (tohle je třetí článek a jazyk mám na vestě... jak to děláš, H.H.? :)). Článek to má být propagační a jeho námětem... Knihovna pro Borland Pascal. CiA 1.00 Pascal, ač na ústupu, ještě trochu žije. CiA mu doufám pomáhá, protože obsahuje funkce, které žádná jiná knihovna nemá (tj. ani pro Céčko). Abych opět planě netlachal, zkusím tak nějak srovnat se známým Allegrem pro DJGPP (Céčko). Bohužel už jsem dlouho neviděl novou verzi. Ale snad nebudu moc kecat. Allegro je jednoduché a přehledné. Programátor musí vědět, jak to uvnitř počítačů běhá a pokud existují nějaké nepříjemnosti dané hardwarem a operačním systémem (jako že existují), musí je snášet. Namátkou klávesnice vracející odjakživa jakési zoufalé kódy. Všichni mazáci už jsou na to zvyklí a nováčci ať si tím taky projdou. Allegro tak vlastně pouze zprostředkovává hardware a služby operačního systému se všemi jejich chybami. Samozřejmě má spoustu dalších skvělých vlastností, tohle byl jen příklad pro pochopení principu. Funkce jsou jednoduché a někdy bohužel umí jen to, co umí někdo jiný, se všemi neduhy. CiA je knihovna uvnitř tak složitá, že se v ní většinou nevyznají ani autoři. Ale svou složitostí vytváří nové funkce a navenek - v interface - je už zas jednoduchá. Asi největší hroudou kódu je scrollovací engine běhající na všech možných i nemožně zabugovaných kartách ve všech rozlišeních a barevných hloubkách. Uvnitř děs a utrpení, navenek naprostá pohoda, žádná starost, v jakém jsem rozlišení nebo barevné hloubce, na jaké kartě, jestli to není obyčejná VGA, jestli nezůstanu v polích v odpojeném vagónu... Jako maličkost vypadá klávesnice, ale při její nesmírné chaotičnosti dalo velkou práci vše sjednotit, aby se třeba při stiscích šipky doleva s různými předřazovači generovaly víceméně různé eventy, ale vždy s kódem kLeft, a až do puštění klávesy byla nastavená proměnná kPressed[kLeft]. Práce s myší je pak slast, protože generuje stejné eventy. V 16bitovém pascalu, kde klasický GetMem alokuje maximálně 64KB, nabízí CiA vlastní GetMem, který zvládá libovolně dlouhý kus paměti. Práce s INI soubory má řadu featur a hlavně je optimální... už jsem totiž viděl knihovnu, která při každém požadavku na zjištění/změnu hodnoty proměnné pracovala s diskem. Operace s disky a soubory myslí na nečekané situace. Pokud třeba uprostřed kopírování adresáře vyvstane potřeba přepsat nějaký soubor a není flagem řečeno, že se to smí, funkce nahodí dialog a zeptá se uživatele co teď, případně vždy. Vše je samozřejmě nezávislé na módu a funguje v textu i grafice, na statické i na scrollovací obrazovce. Systém loaderů a writerů bitmap z/do různých formátů je zcela nezávislý na tom,které formáty jsou momentálně podporovány. Množina požadovaných loaderů není pevná, ani se nepíše do nějakého pole, ale jednoduše do uses programu a kdykoliv jde měnit. Od té chvíle se při požadavku na čtení bitmapy vybírá příslušný loader, pokud je k dispozici; při ukládání se vybírá z dostupných a pro danou bitmapu použitelných writerů ten nejvhodnější. Tak to byla asi nejdelší reklama jakou jsem kdy psal... Ať vám slouží, jak bylo záměrem. CiA je ke stažení na adrese http://www.ms.mff.cuni.cz/shrb5163/#cia Uvedené featury platí od verze 1.00. za všechny autory Dement / Downtown výheň