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 10751×

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ů

13.9.2017 8:00 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tentokrát netradičně v pondělí: 18. září od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

3.9.2017 20:45 /Redakce Linuxsoft.cz
PR: Dne 21. září 2017 proběhne v Praze konference "Mobilní řešení pro business". Hlavní tématy konference budou: nejnovější trendy v oblasti mobilních řešení pro firmy, efektivní využití mobilních zařízení, bezpečnostní rizika a řešení pro jejich omezení, správa mobilních zařízení ve firmách a další.
Přidat komentář

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

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

> Poslední diskuze

18.9.2017 14:37 / Rojas
high security vault

15.9.2017 7:33 / Wilson
new zealand childcare jobs

31.8.2017 12:11 / Jaromir Obr
Re: ukůládání dat ze souboru

30.7.2017 11:12 / Jaromir Obr
Národní znaky

27.7.2017 12:24 / Jaromir Obr
Cteni/zapis

Více ...

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