LINUXSOFT.cz
Username: Password:     
    CZ UK PL

> 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 | read 14201×

DISCUSSION   

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.

 

DISCUSSION

For this item is no comments.

Add comment is possible for logged registered users.
> Search Software
> Search Google
1. Pacman linux
Download: 4791x
2. FreeBSD
Download: 8984x
3. PCLinuxOS-2010
Download: 8488x
4. alcolix
Download: 10804x
5. Onebase Linux
Download: 9568x
6. Novell Linux Desktop
Download: 0x
7. KateOS
Download: 6143x

1. xinetd
Download: 2331x
2. RDGS
Download: 937x
3. spkg
Download: 4549x
4. LinPacker
Download: 9802x
5. VFU File Manager
Download: 3116x
6. LeftHand Mała Księgowość
Download: 7002x
7. MISU pyFotoResize
Download: 2700x
8. Lefthand CRM
Download: 3486x
9. MetadataExtractor
Download: 0x
10. RCP100
Download: 3002x
11. Predaj softveru
Download: 0x
12. MSH Free Autoresponder
Download: 0x
©Pavel Kysilka - 2003-2024 | mailatlinuxsoft.cz | Design: www.megadesign.cz