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:
http://www.egroups.com/group/JEDI-JCL
Connect with Us