LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Free Pascal (5.) - Úvod do FCL

Snaha vývojářů Free Pascalu o kompatibilitu s Delphi vyústila ve vznik knihovny FCL, jež jednak překrývá některé části knihovny VCL z Delphi a jednak přidává další zajímavou funkcionalitu. Dnes se tedy podíváme, co všechno tato knihovna zatím umí.

13.5.2004 08:00 | Aleš Hakl | Články autora | přečteno 5131×

Knihovna jednotek FCL obsahuje mnoho užitečných tříd, komponent a funkcí. Původně se jednalo o snahu o kompatibilitu s Delphi, ale autoři postupně přidávali i jinou užitečnou funkcionalitu. A tak vznikla knihovna, která je i přes svou značnou rozpracovanost užitečná pro mnoho programů.

FCL je zkratka z Free Component Library, component (česky komponenta) je v terminologii Delphi speciální třída (TComponent a potomci), jež má zajímavou vlastnost: umí vytvářet instance potomků načtením z proudu. Tato vlastnost je zásadní pro Delphi, ale například v projektu Lazarus není ze mně nepochopitelných důvodů využita.

Knihovna FCL implementuje pouze nevizuální komponenty a jiné užitečné věci, není určena pro tvorbu uživatelského rozhraní. Tvorbu uživatelského rozhraní řeší například výše zmíněný projekt Lazarus a na stránkách Free Pascalu je ještě odkaz na projekt Kassandra, který ovšem nikam nevede.

Pro rychlou představu bych se držel seznamu jednotek ze stránek knihovny FCL s tím, že dle mého názoru nezajimávé jednotky vypustím a o těch zajimavějších přidám další informace.

  • base64 - Jednotka obsahuje třídy TBase64EncodingStream a TBase64DecodingStream, které kódují zapsaná data do Base64, respektive čtená data dekódují. Obě třídy fungují jako wrappery kolem jiného proudu (instance potomka abstraktní třídy TStream), který je určen jediným parametrem konstruktoru Create.
  • db - Základní třídy pro přístup k databázím, zejména abstraktní třída TDataset, od níž jsou děděny všechny ostatní třídy pro práci s databázovými pohledy.
  • dbf - Komponenta TDbf upravená pro použití ve FPC.
  • ddg_ds - Tato jinak nepříliš užitečná jednotka může sloužit jako ukázka, jak vytvářet vlastní potomky třídy TDataset, jedná se totiž o velice jednoduchou (a jednoúčelovou) databazi pracující nad obyčejným souborem.
  • dom - A zde se právě dostáváme k zajímavým věcem, čímž implementace Document Object Model určitě je. Současný stav implementace je takový, že rozhraní vypadá, že umí DOM Level 2, leč spolehlivě fungují pouze Level 1 vlastnosti. Ve spojení s poměrně narychlo napsaným a ne příliš funkčním XML parserem to znamená, že podpora XML není vůbec kompletní, ale přesto může fungovat jako rozumná metoda pro ukládání dat nebo konfigurace.
  • ezcgi - Jedná se o jednu jednoduchou třídu určenou pro podporu psaní klasických CGI aplikací. Vše, co musíte udělat, je překrýt metody DoGet a/nebo DoGet a prostřednictvím dostupných metod a vlastností zjistit potřebné informace o uživatelském požadavku.
  • http, httpsvlt, xmlrpc - Při procházení zdrojových textů knihovny FCL jsem narazil na velmi zajímavý adresář /net, jenž obsahuje jakousi implementaci xmlrpc a dokonce i s tím související velmi jednoduchý (zatím silně rozpracovaný) http server, klient a servletovou architekturu.
  • mysqldb - Opět potomek TDataset, tentokrát pro mysql. Vyplníte několik vlastností, zavoláte metodu a máte výsledek SQL dotazu v instanci potomka TDataset
  • pipes - V celku jednoduchá jednotka, která obalí nepojmenovanou rouru dvěma proudy - docela užitečná věc, v standardní knihovně C++ něco podobného dost postrádám.
  • xmlcfg - Jednoduchá jednotka pro ukládání hierarchické konfigurace do XML dokumentu. Cesty k jednotlivým vlastnostem se udávají jako názvy oddělené lomítkem, přičemž poslední je název atributu, ostatní názvy elementů. Například 'daemon/connection/port'.
  • xmlread - Velice jednoduchý (ale funkční) XML parser. Největší nevýhodou je, že parser neumí konertovat kódování. Pravdou je, že pokud chceme pouze ukládat nějaká data, tak nám to zpravidla příliš nevadí a leckdy i vyhovuje.
  • xmlwrite - Opak předchozího, procedury které naopak zapíší obsah DOM stromu do XML dokumentu.
  • xpath - Funkčně vypadající implementace jazyka XPath pracující nad datovými strukturami z jednotky dom.
Tento výčet samozřejmě není vyčerpávající, pouze jsem vybral to co je něčím zajímavé a většinou se jedná o jednotky, které v VCL nenaleznete, nebo jste je alespoň nenalezli v době kdy jsem v Delphi přestal programovat.

Knihovna FCL je místy silně rozpracovaná či neúplná a autoři s radostí přijímají jakékoli smysluplné další třídy, ať již GPL implementace nevizuálních komponent z Delphi, nebo komponenty uplně nové.

Doufám, že vás dnešní poněkud teoretický a agitační díl připravil na další, tentokráte již poněkud užitečnější, pokračování, kde bych se chtěl podívat právě na podporu práce s XML ve Free Pascalu.

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků
> Služby
Administrace serverů
Od 350 Kč/hod
Server housing
Od 1000 Kč/1U

30.7.2010 9:06 /MaReK Olšavský
Krátký článek pro pythonýry připomíná zlatá pravidla programování (vztažitelná i na jiné jazyky). Pokračujte odkazem na konci článku :-).
Přidat komentář

29.7.2010 14:39 /Radim Kolář
IBM vydala další z řady publikací pro studenty Getting started with open source development. Probírají se licence, obchodní modely, příklady OSS projektů a jak se zapojit do vývoje. Dodatek je věnován krátkému úvodu k DB2 databázi.
Přidat komentář

29.7.2010 7:44 /MaReK Olšavský
Při procesu akvizice SUN Microsystems Oraclem se mluvilo především o MySQL a Java platformě, ale Oracle získal mnohem více zajímavých produktů se širokou uživatelskou základnou, například VirtualBox, ke kterému má poněkud macešský přístup. Bude tu VirtualBox pro běžné uživatele, nebo se s ním máme pomalu rozloučit?
Komentářů: 1

29.7.2010 7:08 /MaReK Olšavský
Pokud se uživatelé distribucí Fedora a Ubuntu těšili na pozimní vydání, která měla přinést GNOME 3.0, mohou svá očekávání zmírnit, GNOME 3.0 bude opožděno, snad jen do března 2011.
Přidat komentář

28.7.2010 8:49 /MaReK Olšavský
Možná pro někoho může být překvapující, že CentOS má majoritní podíl mezi webservery. „Bezplatný RHEL“ trochu překvapivě předstihl vyzdvihovaný Debian i FreeBSD.
Komentářů: 5

   Více ...   Přidat zprávičku

> Poslední diskuze

29.7.2010 18:24 / Hynek (Pichi) Vychodil
Re: Kým vyzdvihovaný Debian?

29.7.2010 15:29 / Radim Kolář
Re: Ruchlost kompilace

29.7.2010 12:40 / Radim Kolář
Freebsd

29.7.2010 12:35 / Radim Kolář
mne pada

29.7.2010 12:35 / Slavomir
Rychla maska

Více ...

ISSN 1801-3805 | Prague hotels | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2010) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze