HotLog.pas manages entirely a log file. It is multi-threaded and the log file is buffered, to ensure proper writting, whatever appens to tour application.
HotLog.pas / THotLog features :
» THotLog is multithreaded, object oriented, and buffered safe. The log file will be correctly written to
disk, even if your application crashes. The logging/parsing/formating and optionnal visual feedback work
don't consume your main thread's time. You can use as many instances of THotLog as you want.
» Management of the log file itself :
o Path, name, extention (including [optional] generation (".001", ".002" aso) based ones),
o File accesses (openning, writting, closing ; Dealing with older version(s) if generations
are used) ;
o Any default value / behaviour can be easily changed.
o Since v2.0, HotLog is able to close the log file once a certain limi is reached, then openning a new
one (Thank to Robert Becker work)
» Fully "automated" : The logging object instance is created at your application start-up,
you can use it directly if you decide to change none of the default settings. Similarly, everything is freed
when needed. However, any setting can be changed either before beginning to logg, and/or (for some of
them) during run-time.
» Provides means of easily retrieving informations about the environment your user is actually working
with, in order to facilitate debugging, in case of need. These informations include numbers and facts
about the operating system, the memory, the system's timing accuracy, and much more ;
» Provides easy-to-use strings formating capabilities, to have your logs presented cleanly ;
» Able to output detailed informations in case of exceptions occuring, includding the ability to deal
with "variant open array parameter" (thanks Rudy V.'s work) : All you have to do is to give the
exceptions logging methodes some datas like they are (for example the list of the parameters received
by the function), without wondering whether they are integers or strings, valid pointers, uninitialized or
dangling ones, aso. The log object instance will mind his own business with all that stuff ;
» Can be assigned a memo, in order to provide your user visual feedback : The lines writted to the
log will be displayed in this memo too ;
» Provides code timing features too, with a resolution going from seconds to nanoseconds, and from
ticks to cycles depending on your user's computer, and the timer you choose ;
» Many options are available, to allow you to change hotLog's default behaviour ;
» More, and more, ...
Components with source :
All files on these pages are freeware for any use, and come with full source. However, they are under copyrights that remain mine for my parts of the code, and original writters for their parts of the code.
These unit can be freely used in any application, freeware, shareware or commercial. Yet, I'd apreciate your sending me an email if you decide to use them.
Of course, you use them under your own and single responsability. Neither me, nor contributors, could be held responsible for any problem resulting from the use of these units. ;-)
QTimer.pas contains TQTimer, a tool to time code, with the ability to convert measures to the time unit of your choice, including an "optimal" time unit detection.
» TQTimer provides means to time code with the highest possible precision, using four different
counters, and giving measures either in the used counter native unit, or in the time unit of your
choice, with a precision ranging from hours to nanoseconds (depending on the systeme it
TQTimer being an object definition, you can use as many instances of it as you want.
This can be usefull for example to have an instance by counter tool used (GetTickCount, RDTSC,
aso.), and/or an instance by parts of code, ...
TQTimer provides an "optimal time unit" detection feature, that wil return differences between
two measures in the most readable time unit possible.
QTimer.pas / TQTimer features :
Note : HotLog.pas contains the TQTimer object definition too, to have everything on a single unit. Thus, if you use HotLog.pas, you don't need Qtimer.pas.
TQProgressBar is a ProgressBar replacement, which can - among other features - provide an XP look to your bars, even outside XP.
» TQProgressBar is a ProgressBar replacement, which can :
. display a flat or cylindric bar (two kind of cylinder effect available) ;
. the bar can be vertical or horizontal ;
. display or not "inactive positions" (the ones not yet reached)
. have a shape and a background, or not ;
. be monocolor, or display a gradient ;
. all colors can be changed (shape, background, bar itself, inactive positions)
. show positions either in a continuous bar, or blocks by blocks ;
blocks are then displayed step by step, or full block by full block ;
It is freeware, comes with full source, has been developped under D6PE ;
It can be installed in an IDE palette, and be use like any other visual component ;
The zip file contains a list of all available properties, and a fully fonctionnal demo.
TQSpiderGraph, a powerfull spider graph (aka. "radar graph") component.
TQSpiderGraph : (v1.1 : 2004-08-06)
» TQSpiderGraph is a freeware charting component.
This component displays spider graphs with as many axes and lines as you want (keep it
It has numerous properties which apply more particularly to :
. the axes ( number, colors, individual max and min)
. its background (transparency, single color, oriented gradient)
. the number of lines, their color, caption thickness,aso
. It tracks mouse moves. Displays lines values near the pointer and/or raises events when
the mouse enters or exits a line
. It's image can be saved on the disk, or copied into a bitmap in memory.
Spider graphs (aka "radar graphs") are especially usefull to allow your user to easy visualy
compare the values of different sets of datas. TQSpiderGraph provides means to easily
achieve such a visual comparison :
Its usefull line highlighting functions allow you to highlight :
-> The line(s) with the widest or narrowest area ;
-> The one(s) with the highest (or lowest) value(s) on such or such axe ;
-> or simply the one of your choice, using its index.
Highlighting can be made using one or a combinaison of the following "higlight modes" :
-> Change higlighted line(s) color,
-> Change higlighted line(s) thickness;
-> Show the points of this line only ;
-> And why not, do temporarily "flash" this line
TQSpiderGraph contains much more features. An example is it's ability to optionally auto
define the limits of each axe, depending on the values you send to it.
It has been developped and tested under D6PE, and comes with full source ;
The zip file contains the component source code, a compiled demo and its source, together
with an "Howto" file, in html format.
Last version = 2.2 (2005-07-25)
Since version 2.0 HotLog is able to close the log file and open a new one once a certain size limit is reached.
(Since 2.1 HotLog is compatible with D5)
(Version 2.2 enhances visual feedBack, and fixes a possible AV when creating the log file)
Using MethodAddress(); to access a published method of a class by its name used as string.
This article illustrates :
- Accessing a method (procedure or function) at runtime, using it's name as string, including reading the result (when functions are concerned) ;
- Incidentally : Some possible variants usage, including storing (and retrieving) pointers in them.