Delphi ressources
Delphi ressources
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 :
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, ...
.: Contact :.
.: Français :.
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.
Download for Delphi 5, 6 and 7 (source + help.chm)
Download (source + help.htm)
» 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 
executes on).

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 :
QTimer.pas / TQTimer features :
View some examples of lines added to a log file, and the code needed to do it.
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 :
TQProgressBar :
» 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.
Download (V1.1 - source, readme + demo)
View a screen copy of some bars at work(71 k.)
TQSpiderGraph, a powerfull spider graph (aka. "radar graph") component.
TQSpiderGraph : (v1.1 : 2004-08-06)
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.
View some screenshots
Download (source, demo & howto)

The last version (1.1) allows to save the component to a .bmp or .jpg file, or to a TBitmap, in memory
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.

2.1 HotLog is compatible with D5)

2.2 enhances visual feedBack, and fixes a possible AV when creating the log file)
Article :
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.