is an acronym for the Key Objects Library and is a VCL replacement for
Delphi that enables the programmer to write Windows executables that are
typically between 10-20 times smaller than its VCL equivalent.
KOL was designed by Vladimir Kladov.
All material on this page is either written or translated to KOL by Thaddy de Koning.
Almost everything is freeware but some is subject to the license(s) of the original materials, either GPL, LGPL or MPL.
|KOL 2.10 and FPC 2.0.0 instructions on how to use|
Alex Gregory's beautiful Delphi Forum in the
I am now the moderator of the KOL sections and I use it to publish lots of tips and tricks and some articles. Go and have a look! If you have a good KOL tip, do not hesitate, publish it on the forum!
On request: my KOL port of ShorterPath
Software's CPUTime Unit.
It measures the CPU time in percentage of the current process or thread.
This is a very early BETA! version of a
statically linked SQLite library for KOL.
It is based on the version available here.
Albert Drent, who created a full set of VCL components
Gianpaolo Avallone, who provided the initial .obj files
I made several changes, though, mainly to do with memorymenagement stubs and possible linker errors. I also included a very basic KOL object with more Delphi like style naming conventions. By no means finished. Expect that soon.
A small tool to check what ACM subsystems
(drivers) you have installed and what capabilities are supported
Based on some code in the Delphi Magazine 85
This is a waveplayer component that also can
play MP3 files through the ACM codec, if it is installed on your system.
at http://www.looprecorder.de/tut_l3codec.php is a good tutorial on how to obtain and install the proper codec, even without having to install the full mediaplayer 10.
These controls are not written by me but by
I include them because they are not easily available, but are very good.
|A beta of KOL sourcecode for the Skype API||There's also a much simpler example on Blue Aura and on the delphimaster forum, both under the KOL section.|
Much improved updated version of the gauge
control I made for Deniss.
This version has proper min/max support and optional anti aliasing using three optional types of oversampling.
ECM has written the mirror for MCK!...and fixed some bugs.
2.10 for Freepascal 2.0.0
Note that as of version 2.10, kol.pas in PAS_VERSION mode is fully Freepascal 2 compatible. Vladimir Kladov incorporated the patches that were necessary into the official kol distribution. This download is only for convienience. Please note that kol still needs the support package ppdelphi.zip. This is also included but can also be downloaded separately here
A complete, ready to use package including
kol.pas 2.10 and 5 examples for experiencing the power of KOL with
Apart from a full kol 2.10 install for Freepascal 2.0.0 it contains:
1. a simple empty form
2. a WIN32 whois application
3. an example wordpad like application
4. an example of how HSL and RGB colors interact.
5. an object oriented example of how to draw polylines.
6. an xml demo with a simple but powerful reusable OO xml library
All examples except the first contain reusable objects for your own programs! The good news is, that they are exactly or almost exactly the same as found on this page for Delphi. The bad news: well, there seems to be a problem on some machines where the executables work, but exit with a memory leak. Sometimes it happens, sometimes it doesn't. I am still investigating this.
Please report if it doesn't work, but also report if the executables DO work. It will help me a lot in debugging. I run only AMD machines at home (an older athlon 1300 and a 64)
Please read this first, and modify fpc.cfg as explained.
|If you want to read about programming, algo's or just want to be amused, visit http://www.boyet.com/. Simply because.|
I decided to create - unofficial - email
support for KOL related questions.
If you mail to firstname.lastname@example.org, me and some other bravehearts that use KOL will try to answer you as soon as possible. Please note that you must allow for about two days to get a reply.
You may put your question in English, French, Russian, Dutch or German. All answers will be in English. Apart from russian, which I am still learning (because of Kol) I can read fluently in these languages, so don't be modest, write what you want and how you want to express yourself.
You can also try to reach me at icq 218989577 to discuss KOL related issues. Only after 19:00 gmt +1.( I use a Miranda clone written in KOL, still alpha.)
|Kol simple Coolbar Control||
A simple KOL coolbar control.
Not everything implemented,
You must create controls you want to add with the form as parent. or use TCoolbar.Addband with a newXXX function.
|color spectrum demo||
Made on request:
Demonstrates how HSV and RGB values interact. Partly based on library code from:
KOL controls do not have a scale property.
Here's code that can scale a KOL application very comfortably.
I updated the demo to show you how to automatically handle a screen change using the WM_DISPLAYCHANGE message. The demo does not include BitsPerPixel change support, because I only have TFT's so I couldn't test that.
|Rat Alert 2005||
The 2005 version of
my ever popular Rat Alert Document Alarm.
I won a programming award back in 1989-1990 with the first dos version and have revisited it many times and in many programming languages. This version is fully rewritten to reflect the current version of KOL (2.08) and is much cleaner than the old code. This idea may be 16 years old, the code is brand new!
Maximize your Wave Volume, Put the mouse on your documents, Activate RatAlert!
A KOL extended registry object that can
search, import, export keys and values.
I merged Colin Wilson's extended registry object with my KOL registry code.
A KOL chart control
Supports 9 types of chart, pies, lines, bars, etc.
Supports clipboard and printing
1.01 Resizebug fixed
|Kol ledladder||Similar to Kol Indicator, but more sophisticated.|
A KOL indicator control made on request.
Good example of 'how to create a KOL control'
Made it optionally stereo on request
This is based on Serhiy Perevoznyk's work and again an authorised translation (although a lot of it is new!)
Active scripting without using msscript.ocx.
Built on top of the scripting engine itself. Can use any ms scripting
language. Includes a KOL com- wrapper to script KOL controls.Very
powerfull. Serhiy included a link to my page, so: look at his brilliant
|KOL Scope control||Made on request: a scope control|
|Kol smooth image rotation example||
On request: A simple example of how to
rotate images fast and absolutely smooth using the plgblt API function.
This function is in the windows API since NT4. It is more relevant now, because almost anyone has XP. It doesn't work on W95-Me
|KOL dynamic array sort and search unit||
On request: A unit for very fast sorting and
searching dynamic arrays.
Handy for in memory database like applications
|KOL GDI mapping modes example||Onrequest: A simple CAD like drawing example|
Based on code by Boguslaw Brandys, but
almost everything changed.
Now much simpler.
Turned into a real KOL TControl.
The original needed an Icon resource,
this one takes icons for truetype, vector and Opentype from "fontex.dll".
which should be present on all systems from win95.
If XP or 2000 then OpenType fonts are supported.
updated: small change on request to leave onchange handler free for the user. Added wndprocFontcombo.
Published with permission from Marcel van Brakel.
1.8 meg download
This is the famous winapi32 by Marcel van
Brakel that is at the core of the JCL. This version is modified to work
with kol, with or without err.pas.
It can still be used for the VCL too, I modified it faithfully and added two defines in WinDefines.inc:
$DEFINE KOL removes dependencies on sysutils.
$DEFINE USE_ERR enables err.pas for KOL structured exception handling
The latter option is only available if KOL is selected.
|Connect to a whois server. Includes demo.|
This is a sniffer component and demo that
utilizes the famous WinPcap driver to sniff network traffic independent
from the operating system, i.e. winsock.
It includes extensive filtering capabilities. The driver itself can de downloaded from:
This version is authorised by the original author Umar Sear and it is favorably reviewed by the winpcap team. A link, both to the KOL site as mine, is included on their pages. I have had some remarks that there are other sniffers around for Delphi that do not need a devicedriver. Those are all based on the rather incomplete winsock2 API and are feature-wise totally inferior to winpcap based sniffing. Examples: you can't detect spoofing attacks with winsock2 based sniffers, you can't resend /redirect packages easily, you can't do remote capture. The neat thing about the winpcap driver is that it is a ring 0 kernel devicedriver and really completely independent from winsock2. If you really want a winsock2 based sniffer, may I cheekily refer to tdknetstat, that i wrote ages ago. It is still available from the official KOL site.
The Boehm garbage collector is a famous and
widely used garbage collector that is reasonably efficient and contained
in a small dll. Here are KOL interface units for it, based on the work of
Barry Kelly and article 21646 on the Borland community site. I also
adapted the demo to work with KOL objects. This is not only a GC. It can
also be used for debugging purposes.
This Garbage collector supports both simple objects and objects that need finalization.
A small object that allows you to write
small but effective FTP clients using the wininet api.
Smallest possible visual client about 18K.
Based on code by Charley Calvert, but translated to KOL, expanded and improved.
I wrote this for Hilde, a great entertainer and friend.
Now includes a manifest file for the ever more popular TeleTubby mode.
View the helpfile
This is a tiny but very powerful guitar chord finder that supports different tunings and piano keyboard feedback. The chords are calculated, not looked up from a database. The chords can be copied to the clipboard for inclusion in documents or for further reference. Also has Midi support.
It includes full sourcecode and a helpfile.
The piano keyboard is a new and original KOL control. It can be used separately and supports playing the piano keyboard from the computer keyboard.
This is the new version of WaveIO 1.04 for
KOL and the VCL.
Define KOL to use with KOL. Otherwise, for the VCL the source is identical to the original 1.04 version by TobyBear. It includes a demo wave player exactly like the original by Tobybear too. ( But 38 K instead of 410K)
And this version released on the same day TobyBear released it! (But it was still a lot of work)
This is a translation of a large part or the
dc-dsp audio components. The translation is kindly authorised by Milenko
Mitrovic. It contains a large number of components to build audiostudios
and much more. Here's a small example I did as a demo for Milenko.
updated version to the final official release 1.0.1, added helpfiles
More info can be found at: http://www.dsp-worx.de
A complete Btree system and record manager
to build very fast lightweight or even heavyweight databases!
Original code by Julian Bucknall, Delphi magazine 73, 74 and 75
Lorenz and Rossler Oscillators
Comment from Rusell: Cool :)
This module defines the classes TLorenzOsc
and TRosslerOsc - low frequency
oscillators suitable for modeling 'analog drift' or other random-but-smooth
processes. Both classes have identical APIs - you could unify the interface
with virtual functions easily. Portable KOL, VCL, Kylix and Freepascal
The Rossler and Lorenz functions are
iterated chaotic systems - they trace smooth curves that never repeat the
same way twice. Lorenz is "unpitched", having no distinct peaks in its
spectrum -- similar to pink noise. Rossler exhibits definite spectral
peaks against a noisy broadband background.
Translated from a C++ source by:
Russell Borogove / www.tinygod.com
|Kol Polyline||A set of objects to easily manipulate, resize, move and delete Polylines. Great for drawing applications|
A Kol Shape control:
Possible Shapes are:
|KOL sort functions||
Some more basics:
|consoledemo.zip||A demo of how to redirect console input/output. Has some advantages over the KOL support for IORedirect since it can work on a line by line basis|
A Low Frequency Oscillator based on a
lookup table. Since it is LUT based you can easily add more waveforms
besides the included triangle, sinus, sawtooth, square and exponent.
Portable code: VCL and KOL
|This is a demo and an object that uses a simple thread manager to synchronize between the main application and an arbitrary number of new KOL ManagedThreads. This makes threadhandling really easy! Uses a technique that is independent from the syncro objects below. You almost can not go wrong with this one. This is unique for KOL, I haven't done this for the VCL yet.|
|Kol Thread Synchronization Primitives||
Function NewEvent(EventAttributes: PSecurityAttributes; ManualReset,
InitialState: Boolean; const Name: string):PEvent;
function NewThreadLogger(aSize:integer = 0):PThreadLogger;
A couple of new KOL streams:
a Buffered stream
All are true KOL streams (return pStream)
|Control your sound card's mixer. Supports up to 10 soundcards and all available channels. My KOL translation of TAudioMixer control by Vit Kovalcik. Now includes a small demo that controls your default mixer (taskbar). I am happy to anounce that this translation is authorised by the original author, Vit Kovalcik.|
|A simple sizer control and a grid control to do KOL control manipulation at runtime. Can serve as the basis for a forms designer in KOL.|
|democtrl.zip||This is a small demo control that acts a bit like a trackbar. It shows you how easy it is to write new KOL controls. Uses the recommended way to write new controls. heavily commented. Written in response to a question from one of the english -not russian, sorry my mistake- KOL forum visitors.|
If you want a small (possibly the smallest)
stand alone MP3 player that uses very little resources, here it is!
Only ~80 K!, sources available on request and at the KOL site.
I couldn't have written this without the original console application sources by fobmagog available from sourceforge. This is a gpl'd program and not my usual free for all ware.
It does not rely on external dll's: it has its own codec. You can uninstall mediaplayer and it will still work. This can lead to strange questions, it seems: no this is not a shell, it is a self-contained full featured win32 application.
This archive contains a very simple example
wave player with Vu meters.
It contains a VCL version that compiles to ~400Kb
and it contains a KOL version that compiles to ~40Kb.
Both versions are functionally identical and
share 90% of the sourcecode.
The KOL version also needs my tdkdsplib.zip
When I am developing, I sometimes have an
alternative webserver running at the link to the left.
It runs on Tinyweb and I will use it to provide info on what I am working on.
* If it fails, I am not there.
* If there's no content, I feel lazy.
A replacement for the earlier OleRichEdit
control by Alexander Shakaylo. I surfaced the Text Object Model
interfaces, that are very powerful.
A demo follows shorly - I've lost it somewhere, I'm ashamed to say-
If you downloaded KolOleRe.zip from the KOL website recently, you already have it. It is now part of the "official release".
This is a first beta demo for the TOM
It's not an editor yet, but look at the small number of lines that actually does the highlighting!
Also includes a Ruler object, languages support unit, pascal tokenizer, new actionlist with some nice features. Not crashproof yet. Do not use on larger files. It will parse but can take a long time.
MS office converters - like in Wordpad -
support for KOL Richedit and OleRichedit controls.
If you have MS office installed you may be able to use a whole host of these format converters.
Word 6, 97-2000, html, WordPerfect, Excel may be supported if there's a converter present.
Note these converters can be buggy. Not my fault, but Microsoft's
The zipfile also contains a KOL Registry object that mimics the VCL Tregistry component.
Intercept *any* standard Win32 or Delphi
procedure or function at runtime and replace it with your own.
Based on an article in The Delphi Magazine 101. This is great fun, but highly technical and can be very dangerous!
|Keyboard macro recorder with small demo.|
A Delphi memory manager replacement with
some very nice side effects.
Makes all memory allocations COM marshalled. Can replace sharemem. Updated to correct a small typo ($33 should have read $CC)
|Simple control to determine caps, num etc|
NewComputerNameDialog(AOwner : PControl):PComputernameDialog;
Also includes several utility routines for shell operations.
Thanks to Serhiy Perevoznyk for the VCL sources
|A very fast pascal tokenizer and a charstream object. Based on code from Julian Bucknall but adapted for KOL and expanded for later versions of Delphi.|
A ruler with glyphs for left and right margin.
Intended for use with editors. True KOL TControl, no mck. Measurements in
inches, centimeters or pixels.
The screenshot is from Dutch Army Knife: a small tool that is still a secret!
Parses a search phrase based on AND OR NOT
operators into a valid SQL query.
Original VCL source by Julian Bucknall (again, still more to come) Delphi magazine 83
thaddy AND (mess OR website)
select * from TABLENAME where ((FIELDNAME like '%thaddy%') and ((FIELDNAME like '%mess%') or (FIELDNAME like '%website%')))
This is a pascal translation of the famous
Freeverb freeware reverb in C++ by Jezar.
Written to be highly portable (BCB, VCL, Kylix, KOL, Freepascal)
It sounds exactly the same as Freeverb 3.
Comb en allpass filters optimized in basm.
A dsp library to do bitrate
conversion, clipping, dithering, limiting, channel reversing, 3d sound and
Fully written from the ground up in BASM. D7 only, due to use of advanced asm instructions.
The library is fast, but also coded with small code in mind! not only for KOL. Full documentation included.
|This is realy cool. The site is up for just a couple of hours and someone asked me for the knob control I used below. Shure, it's a new KOL control and shure, it's free. Here it is.|
Here are a few links to some very old
articles I wrote for the sadly demised, at least not active, best free
Delphi Webzine ever:
from October 2001
This is about KOL, but may be a bit outdated.
I have to review this one.
From November 1999
A hardcore way to re-use typelibraries.
This works sometimes better than other methods,
because you actually share the binary typelibrary.
From May 1999
Creates help constants based on your sources.
I still like this small routine. Still usefull too.
These articles do not necessarily have my approval, considering my current knowledge and there are many more of such items of mine on the loose, I am afraid.
I would like to thank The Delphi Magazine and its authors for providing me with such an abundance of sources to translate to KOL.
Especially the articles by Dave Jewell and Julian Bucknall have given me great pleasure and knowledge over the years.
Thaddy de Konng