Jedi Code Library (English-language version)

By: Matthias Thoma

Abstract: A short description of an impressive Open Source library for Delphi.

By Matthias Thoma

Translated by Rudy Velthuis and Michael Beck

The JEDI Code Library (short: JCL) is still a rather young Open Source project. It was initiated by Marcel van Brakel as part of Project JEDI. Today the active development team contains around 25 programmers, but the list of supporters is by far larger. At the moment, the JCL registers over 200 downloads per week. Altogether it was downloaded more than 10,000 times, a very respectable number, considering the short lifetime of the project.

The goal is to create a free code base for all Delphi programmers, which can successfully stack against the well known and numerous C libraries. Special attention was given to address various all-day problems, instead of creating a highly specialized library. The spectrum goes from the very popular functions for manipulating strings up to the increasingly important functions for Unicode support.

With the license selection, especially the needs of (semi-) professional programmers were taken into consideration. The Mozilla Public License expressly permits the utilization in commercial projects. In contrast to the GNU General Public License, the MPL-based code is "virus free", i.e. you don't have to OpenSource your proprietary code, unless you want to. Also mentioning of the JCL in the visible copyright note is not mandatory (even if it is encouraged <g>).  

Overview of the JCL units

JclAppInst Determine and watch instances of your application.
Jcl8087 Control of the FPU. Setting the precision, querying the status, etc.
JclCounter A high resolution counter (Pentium or higher) 
JclDateTime A vast number of functions for handling dates. Week numbers according to ISO, weekdays, leap years, etc.
JclDebug Line number of an error at runtime, trace mode, etc.
JclFileUtils Path and file manipulations. Setting a file date, deleting directories, creating temporary files.
JclGraphics Enhanced bitmap manipulations, antialiasing, filters, screen shots.
JclGraphUtils Color conversions, channels.
JclIniFiles Simplification of the TIniFile class.
JclLocales Support for locales. Querying date format, character set, etc.
JclLogic Extensive possibilities for bit manipulation. 
JclMapi Sending e-mails with the Simple Mail Application Interface.
JclMath Optimized mathematic routines. Support for NaN, infinity, rational numbers, prime numbers. 
JclMIME Coding and decoding MIME64.
JclNTFS Support for the NT File System. 
JclPeImage Gives extensive information about PE compatible files. Import and export functions, date and version information.
JclPrint Vastly enhanced support of the Windows printing functionality. Setting paper size, determination of the printer interface, driver, manufacturer, etc.
JclRegistry Simplification of the TRegistry class. 
JclRTF A Rich Text Format generator. Supports RAW files. 
JclSecurity Security functions for Windows NT. Determining the rights of the current user. 
JclShell Encapsulation of the Windows Shell functionality. Creating, copying, renaming, moving folders. Creating shortcuts. Opening files. 
JclStrings Extensive functions for string manipulation. 
JclSynchs Synchronization. Mutex and Optex classes, locked Integer manipulation. 
JclSysInfo Determination of all system relevant information. Windows directories, temporary directory, processor speed, user name, environment variables, running processes. 
JclUnicode UCS2 and UCS4 compatible. Search functions, regular expressions, a TWideStringList class and the implementation of most standard Delphi string functions for Unicode. 
JclUnitconv Conversion of international units. 

Among the future JCL goals - apart from the constant functionality enhancements - is support for FreePascal. Furthermore, after Delphi for Linux (Kylix) is released, we will immediately start with porting of JCL to Linux. 

The JEDI Code Library has the right stuff to become a standard library for Delphi. To achieve that, it needs the support of all those who like the idea of Delphi Community, and are willing to support it. If you have any code snippets that might be suitable for inclusion in the JCL, then we would love to receive them

I hope this article will inspire you to share my enthusiasm and hope to be able to welcome you to the JCL community. Please join our mailing list at:

Server Response from: ETNASC03