FCL - Free Component Library


The Free Component Library is meant to be an free equivalent of Delphi's VCL - only all components in this library are non-visual. Visual components are the domain of other projects such as Lazarus or MSEide+MSEgui.

The idea of FCL is to give a complete set of classes, so a programmer is able to tackle most common programming tasks; wherever possible we try to keep Delphi compatibility, so code written for one compiler can be compiled by the other.

Helping out

The FCL is maintained by the Free Pascal team, and is distributed along with the compiler. Everyone is free to donate components, or to implement improvements in the existing components. Though the components should be more or less Delphi compatible, this should not be seen as a restriction. If you think you have some component that can be useful, or would like to implement some component, please contact Michael Van Canneyt.

Current status

The FCL is under continuous development, as many components are being added. As we go along, we try to keep the following class chart up to date. At the moment the Free Component Library contains the following units (in alphabetical order):
Implements base64 encoding/decoding streams.
Implements the Delphi Classes unit, with several utility classes such as streams, stringlists, TPersistent, TWriter and so on.
Contains a TDataset implementation, together with TDatabase aware descendents.
Contains a TDataset descendent that works on a flat file (file of record).
Contains a Free Pascal implementation of a Document Object Model (DOM) set of classes, as specified by the W3 Consortium.
Implements easy CGI scripting. A single class methods needs to be overridden in order to generate a complete CGI script.
A unit to implement resource strings by means of the GNU gettext tools.
Contains a Free Pascal implementation of a Document Object Model (DOM) set of classes for HTML, as specified by the W3 consortium.
A http application class. Incomplete and not maintained at the moment.
Contains the implementation of an IDEA encrypting/decrypting stream.
Contains an implementation of a TInifile class.
Contains an implementation of a stream that can be used to access standard input, standard output and standard error.
Contains a TDataset descendent that can be used to access a MySQL database.
Contains streams that access each other through a pipe. What is written to stream 1, can be read from stream 2.
Contains a RTF (Rich Text Format) parsing class. All that needs to be done is set some event handlers and you can display RTF wherever you want.
A syntax highlighting object for Pascal syntax.
A syntax highlighting object for XML documents.
A text editor core with syntax highlighting capabilities.
A configuration unit that stores a configuration as a XML document.
A unit to read an XML document and generate a DOM structure from it.
A unit to take an XML document object and generate an XML file from it.
A unit that contains compression streams and streams to read .gz gzipped files.