Copyright: (c) 1998 H. Lohninger, Vienna, Austria


 InputFormat

See also:	RangeLow, RangeHigh, Beep

Class:	TNumIO

Declaration:	property InputFormat: TInFormat;

The property InputFormat determines the format of the numeric data accepted by the edit box:

itInt	integer numbers

itFloat	floating point numbers

itExp	exponential notation

itBin	binary format

itOct	octal format

itHex	hexadecimal format

itDynamic	leaves the choice of the numeric format to the user. Any of the above formats may be used. Binary, octal, or hexadecimal values may be entered by using one of the following prefix characters: % for binary numbers, & for octal, and $ for hexadecimal numbers. Negative numbers may only be entered using a decimal format.


 RangeLow

See also:	RangeHigh

Class:	TNumIO

Declaration:	property RangeLow: double;

The property RangeLow defines the smallest valid number number to be accepted by the control. RangeLow is set to -MaxDouble (-1.7E308) by default. Note that the input of positive numbers only can be forced by setting the property RangeLow to zero.

Hint:	If the acceptable input range defined by the properties RangeLow and RangeHigh does not include zero, then the user will not be able to input all numbers of the valid range.


 RangeHigh

See also:	RangeLow

Class:	TNumIO

Declaration:	property RangeHigh double;

The property RangeHigh defines the smallest valid number number to be accepted by the control. RangeHigh is set to MaxDouble (1.7E308) by default. Note that the input of negative numbers only can be forced by setting the property RangeHigh to zero.

Hint:	If the acceptable input range defined by the properties RangeLow and RangeHigh does not include zero, then the user will not be able to input all numbers of the valid range.


Hint (TNumIO)
 Hint

See also:	ShowHint

Class:	TNumIO

Declaration:	property Hint: string;

The Hint property defines the help message which is displayed when the mouse cursors stays over the control. See the Delphi (C++ Builder) documentation for details.

Note, that for the unregistered shareware version of TNumIO the Hint property is automatically set to the copyright message of the component’s author. You may set the ShowHint and Hint properties during the design process, but without having any effect on the run-time component. Of course, this special feature is omitted in the registered version, and ShowHint and Hint will then function as they are expected to do.

Hint:	After registering the component and installing it into the Delphi/C++Builder environment, you have to re-enter your hint text in order to get rid of the nag hint. This is due to the fact that Delphi and C++Builder store the nag hints in the DFM file(s) of your project.


ShowHint (TNumIO)
 ShowHint

See also:	Hint

Class:	TNumIO

Declaration:	property ShowHint: boolean;

The ShowHint property determines if the control should display a help hint when the user's mouse pointer rests over the control. See the Delphi (C++ Builder) documentation for details.

Note, that the ShowHint property is not evaluated in the unregistered shareware version of TNumIO. In this version ShowHint is internally set TRUE, and the Hint property is automatically set to the copyright message of the author. Anyway, you may set the ShowHint and Hint properties during the design process, but without having any effect on the run-time component. Of course, this special feature is omitted in the registered version, and ShowHint and Hint will then function as they are expected to do.


 Registration of NumIO

See also:	How to order

The component TNumIO is a shareware component. You can register it for US$ 8,-. In return, you receive the latest registered release of TNumIO plus unlimited free updates by email. The registered version is, of course, fully functional and does no longer need the Delphi, or the C++Builder IDE. The user may then create stand-alone programs which can be deployed without paying any further licenses.

Please note, that the sources of NumIO are available separately at a price of US$ 20,-

 Click here for further details and infos on available discounts.


 Using TNumIO

See also:	Installing TNumIO, Registration of TNumIO

The utilization of TNumIO is straightforward. Put it on the form where you want it to be and set up the properties as you need them.

TNumIO has been designed to provide a way to enter numeric values in various numeric formats. The numeric format (integer, floating point, exponential, binary, octal, hexadecimal) can be selected using the InputFormat property. Setting it to itDynamic leaves the choice of the numeric format to the user.

The properties RangeLow and RangeHigh allows to restrict the range of valid numbers. Any number beyond this range will not be accepted by the control. Note that the valid input range can be restricted to positive numbers only by setting the property RangeLow to zero.

The entered number can be accessed both as a string (property Text) or as a number (readonly property Value). The property Text can be used to preset a specific value of the control programmatically.


 Beep

See also:	InputFormat

Class:	TNumIO

Declaration:	property Beep: boolean;

If Beep is set to true, the NumIO control will output the system standard sound when an illegal character is entered.


Assign (TNumIO)
 Assign

See also:

Class:	TNumIO

Declaration:	procedure Assign(Source: TPersistent);

The Assign method assigns one TNumIO to another. The following parameters are copied from the source component:

Beep	InputFormat

DecPlaceSep	RangeHigh

RangeLow

Note that the position, the height and the width of TNumIO are not copied from the source.

Hint:	In general, the statement Destination := Source; is not the same as the statement Destination.Assign(Source);. The first statement makes Destination referring to the same object as Source, whereas the second statement copies the contents of the object referenced by Source into the object referenced by Destination.


List of NUMIO methods
Methods

Assign

Create

Destroy

Free


List of NUMIO properties
Properties

AutoSelect	AutoSize

Beep	BorderStyle

Color	Cursor

DecPlaceSep	Enabled

Font	Height

HideSelection	Hint

InputFormat	Left

RangeHigh	RangeLow

ParentColor	ParentFont

ParentShowHint	PopupMenu

ShowHint	TabOrder

TabStop	Tag

Text	Top

Value	Visible

Width


List of NUMIO types
Public Types

TInFormat

TDecPSep


 TDecPSep

See also:	DecPlaceSep

Class:	TNumIO

Declaration:	TDecPSep = (dsDot, dsComma, dsBoth);

The type declaration TDecPSep defines the possible decimal separator characters. See the property DecPlaceSep for a detailed description.


 DecPlaceSep

See also:	TDecPSep

Class:	TNumIO

Declaration:	property DecPlaceSep: TDecPSep;

The DecPlaceSep property controls which character is used as a decimal separator. DecPlaceSep may take one of the following values:

dsDot	the "." character (dot)

dsComma	the "," character (comma)

dsBoth	allows both the dot and the comma character.

Note that DecPlaceSep is only important for the input formats itFloat, itExp, and itDynamic.


NUMIO
NumIO - Version 1.0

The unit NumIO contains a Delphi / C++ Builder visual component which supports the input of numeric values. The user may select upon several numeric formats, and can optionally constrain the range of valid numbers. The component TNumIO comes together with this help file and a sample application. NumIO is released under the shareware concept. The unregistered version is fully functional with two exceptions: (1) the Hint property is disabled; instead of a user-defined hint the copyright message of the author is automatically displayed. (2) The shareware version runs only when the Delphi (C++ Builder) IDE is also up and running.

Using TNumIO

Interface section of NumIO

Installing TNumIO to your component library

Delphi and C++Builder issues

Registration of the component

Frequently Asked Questions

Details on TNumIO:

Public types

Methods

Properties

Events


ParentFont (TNumIO)
 ParentFont

See also:	Font

Class:	TNumIO

Declaration:	property ParentFont: Boolean;

The ParentFont property determines where the numeric input component gets its font information. If ParentFont is True, the control uses the font in its parent component's Font property. If ParentFont is False, the control uses its own Font property.


Font (TNumIO)
 Font

See also:	ParentFont

Class:	TNumIO

Declaration:	property Font: TFont;

The property Font defines the font of the text. For further details about the Font property see the Delphi (C++ Builder) documentation.


Height (TNumIO)
 Height

See also:	Width, AutoSize

Class:	TNumIO

Declaration:	property Height: integer;

The property Height specifies the height of the TNumIO component in pixels.


Width (TNumIO)
 Width

See also:	Height

Class:	TNumIO

Declaration:	property Height: integer;

The property Height specifies the height of the TNumIO component in pixels.


Create (TNumIO)
 Create

See also:	Destroy, Free

Class:	TNumIO

Declaration:	constructor Create(AOwner: TComponent);

The call to the constructor Create instantiates an object of the class TNumIO and allocates the necessary memory. The control is initialized to the following defaults:

Empty := FALSE;

DecPlaceSep := cmBoth;

InputFormat := itDynamic;

RangeLow := -1.7e308;

RangeHigh := 1.7e308;

Text := '';

Beep := FALSE;


Free (TNumIO)
 Free

See also:	Destroy

Class:	TNumIO

Declaration:	procedure Free;

The Free method destroys the object and frees its associated memory. Free is successful even if the object is NIL. Thus if the object was never initialized, for example, calling Free won't result in an error.

Hint:	Normally, you need not call Free by yourself, since the owner of the component (usually a form) does this automatically.


Destroy (TNumIO)
 Destroy

See also:	Free, Create

Class:	TNumIO

Declaration:	destructor Destroy;

The destructor Destroy releases the allocated heap and removes the object from the memory. Note that a better way for destroying an instance is the method Free.

Hint:	Normally, you need not call Destroy by yourself, since the owner of the component (usually a form) does this automatically.


Cursor (TNumIO)
 Cursor

See also:

Class:	TNumIO

Declaration:	property Cursor: TCursor;

The Cursor property determines which image is used for the mouse cursor when the mouse passes over the region covered by the TNumIO component. See the Delphi (C++ Builder) documentation for details.


List of NUMIO events
Events

OnChange

OnClick

OnDblClick

OnEnter

OnExit

OnKeyDown

OnKeyPress

OnKeyUp

OnMouseMove

OnMouseDown

OnMouseUp


Events (TNumIO)
 Events

See also:

Class:	TNumIO

Declaration: 	property OnChange: TNotifyEvent;

property OnClick: TNotifyEvent;

property OnDblClick: TNotifyEvent;

property OnEnter;

property OnExit;

property OnKeyDown;

property OnKeyPress;

property OnKeyUp;

property OnMouseMove: TMouseMoveEvent;

property OnMouseDown: TMouseEvent;

property OnMouseUp: TMouseEvent;

The OnChange event is triggered whenever the text of the TNumIO control changes (even if it is changed by the program and not by the user). All other events perform like the corresponding standard events of other Delphi/C++Builder controls (see the compiler manuals for more details).


Installation of NumIO

See also:	Using TNumIO, Delphi and C++Builder Issues

The installation of the component is a two-part process. First you have to install the component into the Delphi (C++ Builder) VCL by following the instructions in the Delphi (C++Builder) manual.  Secondly, you should install the help file of this component into the help system of Delphi (C++ Builder).

Delphi installation

C++ Builder installation


 Interface of NumIO

Note: you may have to switch to small fonts to get a legible interface list.

uses

  WinProcs, WinTypes, Messages, SysUtils, Classes, Graphics, Controls,

  Forms, Dialogs, Menus, StdCtrls;

type

  TInFormat =(itExp,itFloat,itInt,itHex,itOct,itBin,itDynamic);

  TDecPSep = (dsDot, dsComma, dsBoth);

  TNumIO = class(TCustomEdit)

           private

             FInFormat      : TInFormat;

             FCurrentFormat : TInFormat;

             OldText        : String;

             FBeep          : boolean;

             FMinimum       : double;

             FMaximum       : double;

             FDecPSep       : TDecPSep;

             FCurrentVal    : double;

             procedure   SetInputFormat (value: TInFormat);

             procedure   SetRangeLow (value: double);

             procedure   SetRangeHigh (value: double);

             procedure   SetLabValue (x: double);

             function    GetLabValue: double;

             procedure   SetDecPSep (Value: TDecPSep);

           protected

             procedure   AssignTo (Dest: TPersistent); override;

             function    CheckChange (Text: String): boolean;

             procedure   Change; override;

             procedure   ConvertToDec (S:String; b:Byte; var V:longint; var Code:Integer);

           public

             constructor Create (AOwner: TComponent); override;

             destructor  Destroy; override;

             procedure   Assign (Source: TPersistent); override;

             property    Value: double read GetLabValue write SetLabValue;

           published

             property AutoSelect;

             property AutoSize;

             property Beep: boolean read FBeep write FBeep;

             property BorderStyle;

             property Color;

             property Ctl3D;

             property Cursor;

             property DecPlaceSep: TDecPSep read FDecPSep write SetDecPSep;

             property Enabled;

             property Font;

             property Height;

             property HelpContext;

             property HideSelection;

             property Hint;

             property InputFormat: TInFormat read FInFormat write SetInputFormat;

             property Left;

             property RangeHigh: double read FMaximum write SetRangeHigh;

             property RangeLow: double read FMinimum write SetRangeLow;

             property Name;

             property ParentColor;

             property ParentCtl3D;

             property ParentFont;

             property ParentShowHint;

             property PopupMenu;

             property ShowHint;

             property TabOrder;

             property TabStop;

             property Tag;

             property Text;

             property Top;

             property Visible;

             property Width;

             property OnChange;

             property OnClick;

             property OnDblClick;

             property OnEnter;

             property OnExit;

             property OnKeyDown;

             property OnKeyPress;

             property OnKeyUp;

             property OnMouseDown;

             property OnMouseMove;

             property OnMouseUp;

           end;

procedure Register;


Left (TNumIO)
 Left

See also:	Top

Class:	TNumIO

Declaration:	property Left: Integer;

The Left property determines the horizontal coordinate of the left edge of the numeric input component relative to the form in pixels.


Top (TNumIO)
 Top

See also:	Left

Class:	TNumIO

Declaration:	property Top: Integer;

The Top property determines the y coordinate of the top left corner of the numeric input component, relative to the form in pixels.


ParentShowHint (TNumIO)
 ParentShowHint

See also:	ShowHint, Hint

Class:	TNumIO

Declaration:	property ParentShowHint: Boolean;

If the ParentShowHint property is TRUE, the ShowHint is taken from the parent control.


Tag (TNumIO)
 Tag

See also:

Class:	TNumIO

Declaration:	property Tag: Longint;

The Tag property is available to store an integer value as part of the numeric input component. While the Tag property has no meaning to TNumIO or Delphi (C++ Builder), your application can use the property to store a value for its special needs.


Text (TNumIO)
 Text

See also:	Value

Class:	TNumIO

Declaration:	property Text: string;

The Text property is the numeric value as text string (exactly as written in the input box). Use it to set the contents of the TNumIO component, as Value is a read-only property.


Value (TNumIO)
 Value

See also:	Text, InputFormat

Class:	TNumIO

Declaration:	property Value: double;

The readonly property Value is used to retrieve the corresponding numeric value from the numeric string contained in the input box. Independent of the numeric format set by InputFormat, Value is declared as double, so you may have to convert it to integer using round or a similar function.


Visible (TNumIO)
 Visible

See also:	Enabled

Class:	TNumIO

Declaration:	property Visible: boolean;

The Visible property determines whether the input box appears on screen.


PopupMenu (NumIO)
 PopupMenu

See also:

Class:	TNumIO

Declaration:	property PopupMenu: TPopupMenus;

The PopupMenu property identifies the pop-up menu that appears when you select NumIO and press the right mouse button, or when the Popup method of the pop-up menu is called. In order to assign a pop-up menu to NumIO, you first have to create a pop-up menu by dragging it from the VCL component bar.


TabOrder (TNumIO)
 TabOrder

See also:	TabStop

Class:	TNumIO

Declaration:	property TabOrder: TTabOrder;

The TabOrder property indicates the position of the numeric input box in its parent's tab order, the order in which controls receive the focus when the user presses the Tab key. Initially, the tab order is always the order in which the components were added to the form, but you can change this by changing the TabOrder property.


TabStop (TNumIO)
 TabStop

See also:	TabOrder

Class:	TNumIO

Declaration:	property TabStop: Boolean;

The TabStop property determines if the user can tab to the numeric input box. If TabStop is True, the box is in the tab order. If TabStop is False, the control is not in the tab order; therefore, the user can't press the Tab key to move to the numeric input box.


Color (TNumIO)
 Color

See also:	ParentColor

Class:	TNumIO

Declaration:	property Color: TColor;

The Color property determines the background color of a the numeric input box. If the ParentColor property is True, then changing the Color property of the numeric input box's parent automatically changes its Color property. When you assign a value to Color property, the control's ParentColor property is automatically set to False.


ParentColor (TNumIO)
 ParentColor

See also:	Color

Class:	TNumIO

Declaration:	property ParentColor: Boolean;

The ParentColor property determines where the numeric input box looks for its color information. If ParentColor is True, the control uses the color in its parent component's Color property. If ParentColor is False, the control uses its own Color property.

Note that ParentColor becomes False automatically, if the Color property is set explicitely.


 AutoSelect

See also:	HideSelection

Class:	TNumIO

Declaration:	property AutoSelect: boolean;

Determines whether all the text in the edit control is automatically selected when the control gets the focus. Use AutoSelect when the user is more likely to replace the text in the edit control than to append to it.


 HideSelection

See also:	AutoSelect

Class:	TNumIO

Declaration:	property HideSelection: Boolean;

Determines whether the visual indication of the selected text remains when focus shifts to another control. Set HideSelection to False to provide visual feedback of the selected portion of the text even when the edit control does not have focus. Set HideSelection to True to show the selection only when the edit control has focus. HideSelection does not affect the actual value of the selection, only the visual indication.


 AutoSize

See also:	Height

Class:	TNumIO

Declaration:	property AutoSize: Boolean;

Determines whether the height of the edit control automatically resizes to accommodate the height of the text. When AutoSize is False, the TNumIO control has a fixed height.

Note:	AutoSize only adjusts the height of the edit control. Even with AutoSize set to True, text in the edit control may appear truncated if it extends beyond the width of the control.


 BorderStyle

See also:

Class:	TNumIO

Declaration:	property BorderStyle: TBorderStyle;

Determines whether the TNumIO control has a single line border around the client area. If BorderSyle is bsSingle, the edit control has a single-line border around the client area. If BorderStyle is bsNone, there will be no border.


Enabled (TNumIO)
 Enabled

See also:	Visible

Class:	TNumIO

Declaration:	property Enabled: Boolean;

The Enabled property controls whether the numeric input box responds to mouse, keyboard, and timer events. The disabled component appears dimmed.


 TInFormat

See also:	InputFormat

Class:	TNumIO

Declaration:	TInFormat = (itExp, itFloat, itInt, itHex, itOct, itBin, itDynamic);

The type declaration TInFormat defines the possible numeric input formats. See the property InputFormat for a detailed description.


MathFeedBackProc [Math1]
 MathFeedBackProc

This routine is part of the unit MATH1

For technical reasons the help file for unit MATH1 is a separate file. You may obtain further information either by using the help file MATH1.HLP, or by using the SDL component suite help SDLSUITE.HLP. Both files can be downloaded from our webserver http://www.lohninger.com/


MouseAction [RChart]
 MouseAction

This routine is part of the unit RCHART

For technical reasons the help file for unit RCHART is a separate file. You may obtain further information either by using the help file RCHART.HLP, or by using the SDL component suite help SDLSUITE.HLP. Both files can be downloaded from our webserver http://www.lohninger.com/


ProcStat [Math1]
 ProcStat

This routine is part of the unit MATH1

For technical reasons the help file for unit MATH1 is a separate file. You may obtain further information either by using the help file MATH1.HLP, or by using the SDL component suite help SDLSUITE.HLP. Both files can be downloaded from our webserver http://www.lohninger.com/


Installation [RChart]
 Installation of RChart

This routine is part of the unit RCHART

For technical reasons the help file for unit RCHART is a separate file. You may obtain further information either by using the help file RCHART.HLP, or by using the SDL component suite help SDLSUITE.HLP. Both files can be downloaded from our webserver http://www.lohninger.com/


SetRange [RChart]
 SetRange

This routine is part of the unit RCHART

For technical reasons the help file for unit RCHART is a separate file. You may obtain further information either by using the help file RCHART.HLP, or by using the SDL component suite help SDLSUITE.HLP. Both files can be downloaded from our webserver http://www.lohninger.com/


ShowGraf [RChart]
 ShowGraf

This routine is part of the unit RCHART

For technical reasons the help file for unit RCHART is a separate file. You may obtain further information either by using the help file RCHART.HLP, or by using the SDL component suite help SDLSUITE.HLP. Both files can be downloaded from our webserver http://www.lohninger.com/


AutoRedraw [RChart]
 AutoRedraw

This routine is part of the unit RCHART

For technical reasons the help file for unit RCHART is a separate file. You may obtain further information either by using the help file RCHART.HLP, or by using the SDL component suite help SDLSUITE.HLP. Both files can be downloaded from our webserver http://www.lohninger.com/


CalcPrincComp [Math2]
 CalcPrincComp

This routine is part of the unit MATH2

For technical reasons the help file for unit MATH2 is a separate file. You may obtain further information either by using the help file MATH2.HLP, or by using the SDL component suite help SDLSUITE.HLP. Both files can be downloaded from our webserver http://www.lohninger.com/


Create [Matrix]
 Create

This routine is part of the unit MATRIX

For technical reasons the help file for unit MATH2 is a separate file. You may obtain further information either by using the help file MATH2.HLP, or by using the SDL component suite help SDLSUITE.HLP. Both files can be downloaded from our webserver http://www.lohninger.com/


TDistMode [Matrix]
 TDistMode

This routine is part of the unit MATRIX

For technical reasons the help file for unit MATRIX is a separate file. You may obtain further information either by using the help file MATRIX.HLP, or by using the SDL component suite help SDLSUITE.HLP. Both files can be downloaded from our webserver http://www.lohninger.com/

----------

Declaration:	TDistMode = (dmJaccard, dmManhattan, dmEuclid, dmEuclidSqr);

The type declaration TDistMode defines the possible operating modes of the method CalcDistMat. Currently the following distances can be calculated:

dmJaccard	similarity measure first defined by P. Jaccard (sometimes also referred to as Tanimoto coefficient)

dmManhattan	Manhattan or city block distance

dmEuclid	Euclidean distance

dmEuclidSqr	squared Euclidean distance


Unit Plot3D
Plot3D

The unit Plot3D contains a Delphi / C++ Builder visual component which supports the display of three dimensioal surfaces. The surfaces are defined by a rectangular grid of height values, and can be viewed from any angle and in any direction. numeric labels. The component TPlot3D comes together with this help file and a sample program (both Pascal and C++).

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit Kohonen
Kohonen

The unit KOHONEN provides a selforganizing map (SOM) as it has been described by Teuvo Kohonen. These SOMs are also known as Kohonen maps, or Kohonen neural networks. The unit KOHONEN contains the class TKohonen which simulates a Kohonen neural network.

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit Statis
Statis

The unit STATIS offers some of the most fundamental procedures of mathematical statistics. Along with the Gamma and the Beta function, all major types of distributions are implemented (normal, t, F, and chi-square distribution). A major benefit of this package is that the distribution functions are calculated analytically and not by approximations, or by table lookup. Thus the precision is at least eight digits.

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit CForm
CForm

The unit CForm contains a class (TMolForm) which supports the handling and display of molecular formulas.  Apart from displaying chemical formulas using the usual notation (subscripted number of atoms, superscripted isotopic labels), CForm also provides several methods supporting some calculations around chemical formulas:

calculating the molecular weight

comparison of formulas

finding formulas for a given molecular weight

scanning strings for molecular formulas

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit NumLab
NumLab

The unit NumLab contains a Delphi / C++ Builder visual component which supports the display of numeric labels. The component TNumLab comes together with this help file and a sample program (both Pascal and C++).

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit DStruct
DStruct

The unit DStruct contains routines, which support the implementation of commonly used data structures (FIFO registers, and bit fields).

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit Vector
Vector

The unit Vector offers some of the more important operations for processing floating point vectors. It hides all stuff dealing with array addressing and memory management. Thus, the user may fully concentrate on his/her work with vectors.

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit Math1
Math1

The unit MATH1 offers several fundamental arithmetic operators and mathematical/logical routines which have not been implemented in Delphi (e.g. hyperbolic functions, tangens, cotangens, or common logarithm). The unit also contains routines to sort data, to produce different numeric formats, to generate random numbers of special distributions, etc. In addition, a special version of the Delphi str procedure is offered which is declared as a function returning the formatted string. This considerably eases the display of numeric values.

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit StringL
StringL

The unit StringL offers some means to process strings. A collection of procedures and functions provide several often used string formatting functions. In addition, StringL contains the class TGrep which offers a versatile string search utility using the wide spread definition of regular expressions as e.g. in the Unix command "grep".

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit CData
CData

The unit CDATA consists of some important chemical data tables and conversion routines as well as some basic routines processing chemical information. Among these are the conversion of atom symbols to atomic numbers, the chemical atomic weight of all chemical elements, the atom symbols of all elements, the atomic weight of the most abundant isotope of each chemical element, the support of a graphical display of a periodic table of the elements, several important chemical constants, the calculation of the molecular weight, the checking for a correct CAS registry number, and the number of valence electrons.

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit ColSel
ColSel

The unit ColSel contains a Delphi visual component which supports the display of the predefined system colors in a combo box.

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit DirTree
DirTree

This component provides a directory tree similar to the one provided by Borland with their sample component TDirectoryOutline. Horwever, TDirTree is much more carefully designed, has less bugs and is much faster. Currently, TDirTree is limited to a maximum of 1900 directories per drive.

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit Fourier
Fourier

The unit FOURIER contains a visual component for FFT (Fast Fourier Transform).

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit Indexer
Indexer

The unit Indexer contains a text indexing machine. The indexes may be created either by use of a thesaurus, or a list of masked keywords, or by indexing every word which is not contained in a list of stop words. Indexer supports the use of regular expressions.

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit Math2
Math2

The unit MATH2 offers some of the most fundamental procedures of univariate statistics (such as mean values, standard deviations, or the correlation coefficient for a series of data pairs). In addition, several more advanced mathematical methods (such as the calculation of eigenvectors and principal components, a simple clustering algorithm, and the approximation of the normal and the t-distribution) are contained in this unit. The unit MATH2 also contains a simple, yet powerful class (TCurveFit) which supports curve fitting of bivariate data.

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit Matrix
Matrix

The unit MATRIX offers some of the most important operations to manage and process two-dimensional real and integer matrices. The object oriented approach of the unit MATRIX hides all stuff dealing with array addressing and memory management. Thus the user may fully concentrate on his/her work.

The unit MATRIX provides two classes, TMatrix and TIntMatrix, which contain a floating point and an integer matrix, respectively. MATRIX offers solutions for the following tasks:

- creation and management of matrices

- filling of matrices

- copying matrices

- matrix arithmetics

- determination of statistical parameters about the matrix elements

- inversion of a square matrix (TMatrix only)

- sorting of elements

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit Meter
Meter

The unit Meter contains a Delphi visual component which supports the display of analog meters (the good old index instruments). The component is named TMeter and comes together with this help file and a sample application.

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit MatView
MatView

The unit MatView provides a class which visualizes the contents of a matrix by displaying rectangles proportional to the values of the single matrix elements. MatView is especially useful to select matrix cells, rows, or columns in a visual way.

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit NTabed
NTabEd

The unit NTabEd contains a Delphi visual component which supports the display and editing of numeric tables. Each table consists of the data table, column and row attributes, column and row headers, and a comment line. All of these items can be manipulated either interactively or programmatically. The data table is based on the class TMatrix.

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit RChart
RChart

The unit RChart contains a Delphi visual component which supports the display of scientific graphs. The component is named TRChart and comes together with this help file and several example programs.

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


Unit Rot3D
Rot3D

The unit ROT3D displays three-dimensional data and supports flickerfree rotation of the 3D view. The rotation can be achieved either by mouse interaction, or by using built-in methods of the class TRot3D. The data can be viewed from any direction, and can be zoomed and panned. Optionally, axes and/or a bounding box may be displayed.

For technical reasons, this help file is restricted to a single component or unit. If you want to have the cumulative help for all components available from SDL, you may download a free copy of the cumulative help from our web site:

http://www.lohninger.com/


 Type Ambiguities

See also:

Some of the components of SDL have type definitions which are syntactically equal to each other. For organizational reasons they are declared separately in each unit. However, this approach may result in ambigous type declarations, if two or more of these components are used within the same program. The compiler generates the following error message:

Delphi:	Incompatible Types

C++Builder:	Ambiguity between 'xxx::ttt' and 'zzz::ttt'

If such a problem occurs, the user has to explicitely specify the unit, or name space of the type declaration by using the name of the unit preceding the actual identifier. The unit name is separated by a dot (or two colons in case of C++) from the identifier.

Example:	Suppose you are using the components Meter and Numlab on the same form. Both components have defined the property FrameStyle which is of the type TFrameStyle. In order to assign a new frame style during run-time you have to explicitely specify the unit which is used for the type definition:

NumLab1.FrameStyle := Numlab.fsRaised;

Meter1.FrameStyle := Meter.fsRaised;

or the same in C++:

NumLab1->FrameStyle = Numlab::fsRaised;

Meter1->FrameStyle = Meter::fsRaised;


How to order

Back to the Contents

For registration please run the program REGISTER.EXE (which prints the registration form) and send the printed form together with the proper amount of money (preferrably credit cards or cash, for cheques please add US$ 5,-) to the following address:

   SDL

   Software Development Lohninger

   P.O.B. 123

   A-1061 Vienna

   Austria, Europe

   email: helpdesk@lohninger.com

The components are preferrably delivered by electronic means (download from our update server after authorization by email). For quick delivery (within 24 hours), please fax the order form (credit card orders, only) to the fax number indicated at our home page:

http://www.lohninger.com/

There are several additional Delphi / C++Builder components, and other software products available from SDL. Ordering several components (w/o source code) together will entitle you to a discount:

2 components	-10 %

3..5 components	-20 %

more than 5	-30 %

Special Offer 1:

SDL Component Suite: Take all of our Delphi / C++Builder (w/o sources) and pay only US$ 55.

This offer includes:

* unlimited free updates via our webserver

* free support for both the Delphi and the C++Builder versions of the components

Special Offer 2:

SLD Component Suite Pro: Purchase the sources of all of our components and get a free subscription to all future components for only US$ 399. This offer includes:

* full source code of all components

* unlimited free updates via our webserver

* free subscription to future components: your component library is thus automatically growing month by month at no extra costs

* free support for both the Delphi and the C++Builder versions of the components

For the latest release of SDL´s Delphi and C++Builder components and for pricing information see http://www.lohninger.com/ or write to the address above.


A  Personal  Remark

We are putting much effort into the production of  most reliable components and units for other programmers. Everybody  who is using our software gets our expertise at a competitive price. But this is only possible if everybody who uses our software, registers it and pays for it. So, if you don't want to kill the shareware idea, don't hesitate to support our work and register this piece of software.

Hans Lohninger of SDL

Vienna, Austria.


Installing under C++Builder - Visual Component
C++Builder Installation - Visual Component

See also:	Delphi installation, SDL Component Suite Help

1. Installing the component into the C++ Builder 1.0 VCL

1.1	Copy the OBJ, the DFM, the RES, and the DCR files to the directory where the C++ Builder library is located  (XXX/CBuilder/Lib).

1.2	Copy the HPP file into the include directory (XXX/CBuilder/Include)

1.3	If not already running, start up C++Builder.

1.4	Click on Component, and then on Install. You can now add the new component by using the Add button (browsing for the OBJ  file is most convenient).

1.5	After you have added all the components to be installed, click on OK. C++ Builder will then add the selected components to the VCL on a palette entry called SDL.

2. Installing the component into the C++ Builder 3.0 VCL

2.1	Copy all HPP files to the include directory of C++Builder (XXX/CBuilder3/Include)

2.2	Copy all DFM, RES, and OBJ files to the object directory of C++Builder (XXX/CBuilder3/lib/obj)

2.3	Copy all BPL files to the binaries directory of C++Builder (XXX/CBuilder3/bin)

2.4	Copy all BPI, DCR, and LIB files to the library directory of C++Builder (XXX/CBuilder3/lib)

2.5	In the C++Builder main menu click on "Component", and then on "Install Packages". This starts the package installation window.

2.6a	If you have previously installed an earlier version of the package, select this earlier version and remove it by clicking on the "Remove" button.

2.6b	Now click on "Add" and select the package to be installed (all package names start with "sdl"). The packages can be found in the binaries directory of C++Builder (XXX/CBuilder3/bin). You may repeat step 2.6 for installing several packages

2.7	When done, click on OK. C++ Builder will then add the selected components to the VCL on a palette entry called SDL.

3. Adding the help file to the C++Builder help system

3.1  (optional) Copy the HLP file(s) to the help directory of C++Builder

3.2  Run the OpenHelp application from the C++Builder group menu.

3.3  Click on the "Add" button, and add the help file(s) to the "Available Help Files" list

3.4  Select the help file(s) and click on ">"

3.5  Click on OK. Thereafter the C++Builder help system knows about the new component(s).

As an alternative, you could install the cumulative help file SDLSUITE.HLP which covers all components of SDL. The cumulative help is available for free at the following web site:

http://www.lohninger.com/


Installing under Delphi - visual component
 Delphi Installation - Visual Component

See also:	C++ Builder installation, SDL Component Suite Help

1. Installing the component into the Delphi VCL

1.1. Installation under Delphi, versions 1, 2, and 3

1.1.0	There are several subdirectories in the distributed package named delphi10, delphi20, delphi30, delphi40, cppbuild1, and cppbuild3. Select the proper Delphi subdirectory.

1.1.1	Copy the DCU, RES, DFM, and DCR files to the directory where the Delphi library is located. If not already running, start up Delphi. Please note: some of the components may consist of several DCU files. In this case, only the master DCU file (which has the same name as the component) has to be installed as described below.

1.1.2a	Delphi 1: click on Options, and then Install Components.

1.1.2b	Delphi 2: click on Component, and then on Install..

You can now add the new component by using the Add button (browsing for the DCU file is most convenient).

1.1.2c	Delphi 3: click on Component, and then on Install Component....

You can now add the new component by selecting the proper package and browsing for the DCU file of the component to be installed.

1.1.3	After you have added all the components you want to install, click on OK. Delphi will then add the selected components to the VCL on a palette entry called SDL.

1.2. Installing the components under Delphi 4

1.2.1. If not already running, start up Delphi 4.

1.2.2. If you have installed a previous (shareware) copy, uninstall it

1.2.3. Select the subdirectory delphi40 of the distribution files

1.2.4. Copy all files of this directory to the Delphi compiler directory (usually  '...\Delphi 4.0\Bin')

1.2.5. Click on "Component" and then on "Install Packages ..."

1.2.6. Click on "Add.." and browse the Delphi compiler directory for sdl*.dpl files

1.2.7. Select the package to be installed

1.2.8. Optinonally, repeat the addition of other packages

1.2.9. Click on OK. Thereafter the selected component(s) are available on the VCL palette using the folder "SDL"

Note:	If you are installing several or all of the SDL components, the order of installation is important because some packages require others to be already installed. Here is a sample order which works: CDATA, CFORM, STRINGL, MATH1, VECTOR, MATRIX, MATH2, NTABED, NUMLAB, RCHART, ROT3D, NUMIO, STATIS, DSTRUCT, DIRTREE, COLSEL, FOURIER, METER

2. Merging the help keywords into the master help index

2.1	Copy the HLP and the KWF files to the directory where the master help file DELPHI.HLP is located (usually \DELPHI\BIN).

2.2	Run the HELPINST application from the Delphi group menu.

2.3	Open the master index DELPHI.HDX

2.4	Add the keyword file (.KWF)

2.5	Save and compile the new index. Thereafter the Delphi master help index includes the keywords for the component's Help screens.

As an alternative, you could install the cumulative help file SDLSUITE.HLP into the Delphi Tools menu. This approach is far better and much more reliable than merging the help files into the master help index (at least for Delphi 1). The cumulative help is available for free at the following web site:

http://www.lohninger.com/

-------------------------------

Note:	Assure yourself that the PATH environment variable includes the directory where the help file is stored. Otherwise the Windows help system will not find the new help file. Alternatively, you can copy the help file to the Windows directory.


Delphi and C++Builder Issues

See also:

C++Builder users of class TVector:

Don’t mix up the class TVector with the vector class of the Rogue Wave Standard C++ Library. (Sorry for the duplicate naming).

Any component of SDL comes both for the Delphi and the C++Builder environment. Thus, you get full support both for Delphi and C++Builder with our components. The following general directory layout of the delivered zip files makes it easier to access the parts you need:

Please note, that the RES files of the sample applications are supplied both as a 16-bit and a 32-bit version (denoted by the extension RES16, and RES32). You have to rename the proper version to RES before compiling the sample applications.


Installing the SDL Component Suite Help
 Installation of the SDL Component Suite Help

See also:	C++ Builder installation, Delphi installation

If you want to install the SDL Component Suite help file into the tools menu of the Delphi or C++Builder IDE, you have to perform the folowing steps:

Delphi 1.0

1.	Click on the "Options" command in the main menu

2.	Click on "Tools..." in the submenu

3.	Click on "Add..." in the tools window

4a.	Enter a title for the help file (e.g. "SDL Help")

4b.	Browse your computer for the program "Winhelp.exe" (which is normally located in the Windows directory "c:\windows")

4c.	In the "Parameters" box, enter the full path of the help file (e.g. "d:\delphi20\compiler\help\sdl16.hlp")

4d.	Click on "OK", and then on "Close"

The cumulative help of the Delphi Componente Suite should now be available from the "Tools" menu of Delphi 1

Delphi 2.0/3.0/4.0, C++Builder 1.0/3.0

1.	Delphi 2, and 3: Click on the "Tools" command in the main menu

2a.	Delphi 2: Click on "Tools..." in the submenu

2b.	Delphi 3 & 4, C++Builder: Click on "Configure Tools..." in the submenu

3.	Click on "Add..." in the tools window

4a.	Enter a title for the help file (e.g. "SDL Help")

4b.	Browse your computer for the program "Winhlp32.exe" (which is normally located in the Windows directory "c:\windows")

4c.	In the "Parameters" box, enter the full path of the help file (e.g. "d:\delphi20\compiler\help\sdl32.hlp")

4d.	Click on "OK", and then on "Close"

The cumulative help of the Delphi Componente Suite should now be available from the "Tools" menu of the IDE.


Nag Hints in the Registered Version
 How to get rid of the nag hints in the registered versions

See also:

Question:

I recently registered this component and installed what I downloaded from the SDL update area. However, the component still lists itself to be the unregistered version.

Answer:

1) you have an old unregistered version of the component somewhere lurking on your harddisk (use the file find utility of the Windows explorer to check that). If so, remove it, deinstall the shareware copy from the VCL and install the registered version again.

2) another often experienced reason can be found in the fact that the Hint property is just set to the shareware message (from previous usage of the unregistered component). In this case, you should simply change the Hint property and/or turn the ShowHint property off.

A simple check whether the registered or the unregistered component has been linked into your program can be performed by starting the application program without running Delphi and/or C++Builder on the system. If the application uses the unregistered component, the program should overwrite the component area with a copyright message. In this case see point 1 above, otherwise point 2.


Linker error when installing RChart
I run into linker error when installing RChart

See also:	Installation of RChart

Question:

I followed the installation instructions but got a linker error when installing RChart:

[Linker Err] Undefined symbol Rcbakbmp::Register[] __fastcall referenced ....

[Linker Err] Undefined symble Rccommon::Register[] __fastcall referenced .....

What's wrong ?

Answer:

Previous versions of RChart (earlier than release 4.00) needed two additional files, RCBAKBMP and RCCOMMON, which contained some basic routines and declarations. These files are not for VCL installation. The only purpose for these files was to circumvent the 64k restrictions of Delphi 1.0. Release 4.00 and higher of RChart does no longer support Delphi 1.0 and thus does not need these files anymore.

In case you encounter this error (if you use an older version of RChart), you tried to install one of these additional files along with RCHART into the VCL. Do not install them, just copy these files to the library directory of Delphi/C++Builder.


Moving the viewing port of RChart
How to quickly move the viewing port of RChart

See also:

With charts containing a large number of graphics items, you have to be careful to avoid triggering the OnPaint event more than once. One way to get the most speed is as follows:

1) Set the property AutoRedraw to false

2) Use the method SetRange to set the coordinates of the new viewing port at once.

3) Call the method ShowGraf

As a rule of thumb on the maximum speed of changing the viewport, you should compare to the pan action if the mouse property MouseAction is set to maPan.


PCA is too slow
The calculation if the principal components is too slow

See also:	CalcPrincComp

Question:

The principal component calculation of unit Math2 is so slow if there are many variables involved.

Answer:

If the calculation of the principal components is too slow, this usually arises from a transposed data matrix with a lot of columns but only a few rows. If you face such a problem you can dramatically speed up the calculations by transposing the data matrix prior to the calculation, and exchanging loadings and scores after it. Note that this trick only works if the number of rows is considerably less than the number of columns of the data matrix.


Frequently asked questions
 Frequently Asked Questions  /  Tips and Tricks

See also:

Registered vs. shareware versions; license policy

I can't get rid of the nag hints after buying the registered version

Do I have to pay any royalties if I develop a commercial application using your components ?

How many licenses are required, given that several programmers of our team are using SDL's components ?

I loaded the registered version from your update area, however it seems that the downloaded software is a shareware copy

Updates

If I purchase SDL components now, do I get any updates for the next release of Delphi/C++Builder ?

Do I need to do anything special in order to receive the latest updates ?

Why is the update process rather complicated ?

Tips and tricks, common problems

How to quickly move the viewing port of RChart

The principal component analysis is so slow with many variables

What is the maximum number of points RChart can display ?

The mouse cursor does not change to its default state when moved outside RChart.

I get an "access violation error", when using TMatrix.

Installation problems

I run into linker error when installing RChart

How to get SDL help suite installed so that Delphi help recognizes it.

I cannot install unit XYZ into the Delphi/C++Builder VCL

Delphi/C++ Builder requires PAS file


Royalties

See also:

Question:

Do I have to pay any royalties if I develop a commercial application using your components ?

Answer:

No, definitely not. You are free to use the registered components in your commerical applications without paying any royalties to us. However, you (1) must not give away any DCU, OBJ, or PAS files purchased from us, and (2) you must not create and deploy any similar components based on our components.

If you are intending to include some of our components in linkable form (either as DCU, OBJ, or PAS file), please write to SDL (support@lohninger.com) for more information.


Max. Number of Data Points
Maximum number of points RChart can display ?

See also:

Question:

What is the maximum number of points RChart can display ?

Answer:

The maximum number of points is limited only by computer memory. However, the display gets slower with more points in the chart. We have tested it with up to 100000 data points.


Site Licenses

See also:

Question:

Our development team consists of five programmers. How many licenses do you require to be purchased, given that each programmer will need a copy of the component installed on their machine? Are there any discounts available in this situation?

Answer:

You need a license for each of the programmers working with our components. However we offer the following discounts

2 licenses: -10%

3..5 licenses: -20%

6..10 licenses: -30%

more than 10 licenses: please ask

Each programmer of your team will be supported by our update policy as if he/she had ordered it by their own. This includes regular updates and hotline support by email.


Installation of SDL Help
Installation of SDL Help into Delphi/C++Builder

See also:

Question:

How to get SDL help suite installed so Delphi help recognizes it.

Answer:

Help files are a still unresolved problem with Delphi. If the keyword file is getting too large, then the help system crashes. So we recommend to install the SDL help into the Tools section of the Delphi IDE. This is less convenient but it works.


Access Violation Error
 Access violation errors with TMatrix and TVector

See also:	TMatrix.Create

Question:

I am having some difficulty with matrix assignments. The following code produces access violation errors:

procedure TForm1.XXX (Sender: TObject);

var

  userdata : Tmatrix;

begin

userdata.Create(5,5);

userdata.elem[1,1] := 2.332;  <--- this assignment causes the problems

....

Answer:

You made a mistake in creating the matrix. The correct statement should read like this:

...

begin

userdata := TMatrix.Create (5,5);   <--- mind the difference !

userdata.elem[1,1] := 2.332;        <--- no problems any more

...


Mouse Cursor in RChart
Mouse cursor behavior in connection with RChart

See also:	MouseAction

Question:

When the mouse cursor moves out of the RChart component fast, it retains the cursor type assigned by the component (say, cross or hand). It does not happen when the mouse is moved slowly.

Answer:

This is not a problem of RChart but of the Windows messaging system. See also hint 1 in the MouseAction page of the RChart help file.


Updates
Updates for new compiler releases

See also:	update process, requirements

Question:

If I purchase SDL components now, do I get any updates for the next release of Delphi/C++Builder ?

Answer:

If you purchase our components, you get all upgrades for future compiler versions for free (via our update server). More information on our update policy can be found on our web site: http://www.lohninger.com/udarea.html


Installation of non-visual components

See also:

Question:

I cannot install unit XYZ into the Delphi/C++Builder VCL. I get an undefined reference in the XYZ object that goes something like this:

Undefined reference XYA::Register() in .....

Answer:

Some of the SDL units are non-visual components (for example MATH1, or MATRIX, or CDATA, ...) which cannot be installed into the VCL palette. The units are to be used in your application by simply including the unit name into the uses statement of your program (don't forget to set the library path to your unit files).


Registered and Shareware Copies
 Registered version behaves like shareware copy

See also:	shareware Hint property

Question:

I loaded the registered version from the SDL update area, however it seems that the downloaded software is a shareware copy

Answer:

You can be assured that any copy obtained from our update server is registered. The most common reason for this problem is that there are several copies of the software (some shareware, some registered) lurking somewhere on your hard disk, and the linker/procject pathes point to an unregistered copy.


Delphi/BCB requires PAS file
Delphi/C++ Builder requires PAS file

See also:

Question:

The installation was all Ok, but when I add a XYZ component on the form and I try to compile and run, I can't because the compiler seems to want XYZ.PAS (file not found XYZ.pas). I just have the DCU since I did not buy the sources. So i cannot run my application.

Answer:

This problem usually arises if there is an old version of the unit in some directory of your Delphi/C++Builder search path, or the library search path does not include the new copy at all.

This is a way how to solve this problem:

1. Uninstall the component from your VCL palette.

2. Be sure that any old copies are removed from your system: use the find utility of file explorer to search all your disks for the component XYZ and delete them all (don't compromise).

3. Extract the latest files from the original distribution. Be careful not to overwrite the copies of the various Delphi/C++Builder versions.

4. Move the various files to the directories as described in the installation instructions and install it into the VCL as described there.

Just a remark:	We receive a lot of mails concerning problems like this. You can be assured that troubles similar to this one are most likely not due to problems with our components. In 99.9% of all cases it turns out that the particular user did not follow exactly the installation instructions, or did not consider the library search paths. So, please, check that twice before you are contacting our hotline.


 Update Loader

See also:	how to get updates

Question:

Why is the update process rather complicated ?

Answer:

In the past we have been confronted with some not so nice people who thought that the registered components should be theirs without paying. As a reaction to it we set up an update scheme which should prevent any intrusion to our system while maintaining full 24-hour support to our registered customers. The price for the increased security is of course that the download of new updates is somewhat more complicated. However, we think that the SDL Update Loader gives you full flexibility at only minor additional efforts for requesting an update ticket.


 Update Requirements

See also:	update process, how to get updates

Question:

Do I need to do anything special in order to receive the latest updates ?

Answer:

No, not at all. However, we need to know your email address in order to set up your account on the update server. If you ordered by fax and forgot to specify an email address, you should suppy one to us by sending an email to support@lohninger.com