<?xml version="1.0" encoding="UTF-8"?>
<!--

Documentation for LCL (Lazarus Component Library) and LazUtils (Lazarus 
Utilities) are published under the Creative Commons Attribution-ShareAlike 4.0 
International public license.

https://creativecommons.org/licenses/by-sa/4.0/legalcode.txt
https://gitlab.com/freepascal.org/lazarus/lazarus/-/blob/main/docs/cc-by-sa-4-0.txt

Copyright (c) 1997-2025, by the Lazarus Development Team.

-->
<fpdoc-descriptions>
<package name="lcl">
<!--
====================================================================
LCLProc
====================================================================
-->
<module name="LCLProc">
<short>Useful lower-level helper functions and classes.</short>
<descr>
<p>
<file>lclproc.pas</file> contains lower-level classes and helper routines 
that are useful in LCL applications.
</p>
<p>
<file>lclproc.pas</file> is part of the Lazarus Component Library (<b>LCL</b>).
</p>
</descr>

<!-- unresolved external references -->
<element name="MacOSAll"/>
<element name="Classes"/>
<element name="SysUtils"/>
<element name="Math"/>
<element name="Types"/>
<element name="Laz_AVL_Tree"/>
<element name="LazFileUtils"/>
<element name="LazUtilities"/>
<element name="LazMethodList"/>
<element name="LazUTF8"/>
<element name="LazUTF16"/>
<element name="LazLoggerBase"/>
<element name="LazTracer"/>
<element name="GraphMath"/>
<element name="LCLStrConsts"/>
<element name="LCLType"/>

<element name="TMethodList">
<short>A list for method references.</short>
<descr>
<p>
<var>TMethodList</var> is an alias for the TMethodList type in the 
<file>LazMethodList</file> unit.
</p>
</descr>
<seealso>
<link id="#lazutils.lazmethodlist.TMethodList">TMethodList</link>
</seealso>
</element>

<element name="TDebugLCLItemInfo">
<short>
A node in TDebugLCLItems, holding information about a heap object.
</short>
<descr/>
<seealso>
<link id="TDebugLCLItems"/>
</seealso>
</element>

<element name="TDebugLCLItemInfo.Item">
<short>The address of the item.</short>
<descr/>
<seealso/>
</element>

<element name="TDebugLCLItemInfo.IsDestroyed">
<short><b>True</b> when the item has been destroyed.</short>
<descr/>
<seealso/>
</element>

<element name="TDebugLCLItemInfo.Info">
<short>A descriptive string for the item.</short>
<descr/>
<seealso/>
</element>

<element name="TDebugLCLItemInfo.CreationStack">
<short>Stack trace at creation of the object.</short>
<descr/>
<seealso/>
</element>

<element name="TDebugLCLItemInfo.DestructionStack">
<short>Stack trace at destruction of the object.</short>
<descr/>
<seealso/>
</element>

<element name="TDebugLCLItemInfo.AsString">
<short>All information about the object as a string value.</short>
<descr/>
<seealso/>
</element>
<element name="TDebugLCLItemInfo.AsString.Result">
<short/>
</element>
<element name="TDebugLCLItemInfo.AsString.WithStackTraces">
<short><b>True</b> to include stack traces.</short>
</element>

<element name="TDebugLCLItemInfo.Destroy">
<short>Destructor for the class instance.</short>
<descr/>
<seealso/>
</element>

<element name="TDebugLCLItems">
<short>
A list describing dynamically allocated (and destroyed) memory objects.
</short>
<descr>
The list holds descriptive information about the object, and stack traces at 
the time of creation and destruction.
</descr>
<seealso/>
</element>

<element name="TDebugLCLItems.FItems">
<short>The list entries, organized as an AVL tree.</short>
</element>

<element name="TDebugLCLItems.FName" link="#lcl.lclproc.TDebugLCLItems.Name"/>

<element name="TDebugLCLItems.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
Sets the <var>Name</var> property to the value in <var>TheName</var>. 
Allocates resources for the internal <var>TAvlTree</var> instance used in the 
class.
</p>
</descr>
</element>
<element name="TDebugLCLItems.Create.TheName">
<short>The descriptive name of the list.</short>
</element>

<element name="TDebugLCLItems.Destroy">
<short>Destructor for the class instance.</short>
<descr/>
<seealso/>
</element>

<element name="TDebugLCLItems.FindInfo">
<short>
Returns information about an item, optionally creating an entry if not found.
</short>
<descr/>
<errors>
</errors>
<seealso/>
</element>
<element name="TDebugLCLItems.FindInfo.Result">
<short>
The item information, or <b>Nil</b> if none was found or created.
</short>
</element>
<element name="TDebugLCLItems.FindInfo.p">
<short>The address of the item to find.</short>
</element>
<element name="TDebugLCLItems.FindInfo.CreateIfNotExists">
<short>
<b>True</b> means create an according list entry, if none existed yet.
</short>
</element>

<element name="TDebugLCLItems.IsDestroyed">
<short><b>True</b> when the item has been destroyed.</short>
<descr/>
<errors>
</errors>
<seealso/>
</element>
<element name="TDebugLCLItems.IsDestroyed.Result">
<short>
<b>True</b> when destroyed, <b>False</b> when alive or not listed.
</short>
</element>
<element name="TDebugLCLItems.IsDestroyed.p">
<short>The address to find.</short>
</element>

<element name="TDebugLCLItems.IsCreated">
<short><b>True</b> when the item is alive.</short>
<descr/>
<seealso/>
</element>
<element name="TDebugLCLItems.IsCreated.Result">
<short>
<b>True</b> when the item is listed and has not yet been destroyed.
</short>
</element>
<element name="TDebugLCLItems.IsCreated.p">
<short>The address to find.</short>
</element>

<element name="TDebugLCLItems.MarkCreated">
<short>Checked insert of an item.</short>
<descr/>
<errors>
GDB exception 'RaiseDoubleCreated' when the address is already in use.
</errors>
<seealso/>
</element>
<element name="TDebugLCLItems.MarkCreated.Result">
<short>The info object describing the address.</short>
</element>
<element name="TDebugLCLItems.MarkCreated.p">
<short>The address to add.</short>
</element>
<element name="TDebugLCLItems.MarkCreated.InfoText">
<short>Descriptive text about the item.</short>
</element>

<element name="TDebugLCLItems.MarkDestroyed">
<short>Checked destruction notification.</short>
<descr/>
<errors>
<ul>
<li>
GDB exception 'TDebugLCLItems.MarkDestroyed' when the item was not yet 
created.
</li>
<li>
GDB exception 'RaiseDoubleDestroyed' when the item was already destroyed.
</li>
</ul>
</errors>
<seealso/>
</element>

<element name="TDebugLCLItems.MarkDestroyed.p">
<short>The address to mark as destroyed.</short>
</element>

<element name="TDebugLCLItems.GetInfo">
<short>Returns textual information about an object.</short>
<descr/>
<seealso/>
</element>
<element name="TDebugLCLItems.GetInfo.Result">
<short>The descriptive string.</short>
</element>
<element name="TDebugLCLItems.GetInfo.p">
<short>The address to find.</short>
</element>
<element name="TDebugLCLItems.GetInfo.WithStackTraces">
<short><b>True</b> means include stack traces.</short>
</element>

<element name="TDebugLCLItems.Name">
<short>The descriptive name of the list.</short>
<descr/>
<seealso/>
</element>

<element name="CompareDebugLCLItemInfos">
<short>Compare function for the TDebugLCLItems AVL tree.</short>
<descr>
Compares the Item addresses.
</descr>
<seealso/>
</element>
<element name="CompareDebugLCLItemInfos.Result">
<short/>
</element>
<element name="CompareDebugLCLItemInfos.Data1">
<short/>
</element>
<element name="CompareDebugLCLItemInfos.Data2">
<short/>
</element>

<element name="CompareItemWithDebugLCLItemInfo">
<short>Compare function for <link id="TDebugLCLItems.FindInfo"/></short>
<descr/>
<seealso/>
</element>
<element name="CompareItemWithDebugLCLItemInfo.Result">
<short/>
</element>
<element name="CompareItemWithDebugLCLItemInfo.Item">
<short/>
</element>
<element name="CompareItemWithDebugLCLItemInfo.DebugItemInfo">
<short/>
</element>

<element name="MergeSort">
<short>
Deprecated.
</short>
<descr>
<p>
Use the <var>MergeSort</var> routine in the <file>lazutilities.pas</file> unit 
(LazUtils) instead.
</p>
</descr>
<version>
Deprecated in LCL version 3.99 (Apr 2024).
</version>
<seealso/>
</element>
<element name="MergeSort.List"/>
<element name="MergeSort.OnCompare"/>
<element name="MergeSort.StartIndex"/>
<element name="MergeSort.EndIndex"/>

<element name="KeyAndShiftStateToKeyString">
<short>
Converts the specified key code and shift modifier to their representation as 
a String.
</short>
<descr/>
<seealso/>
</element>
<element name="KeyAndShiftStateToKeyString.Result">
<short>
String representation for the specified value; i. e. 'Ctrl+Home'.
</short>
</element>
<element name="KeyAndShiftStateToKeyString.Key">
<short>Key code converted in the routine.</short>
</element>
<element name="KeyAndShiftStateToKeyString.ShiftState">
<short>Shift, Ctrl, Alt modifier converted in the routine.</short>
</element>

<element name="KeyStringIsIrregular">
<short>
Indicates if the string contains the 'Word(nn)' representation for an unknown 
key code.
</short>
<descr/>
<seealso/>
</element>
<element name="KeyStringIsIrregular.Result">
<short><b>True</b> when the string is not a named virtual key code.</short>
</element>
<element name="KeyStringIsIrregular.s">
<short>Value examined in the method.</short>
</element>

<element name="ShortCutToText">
<short>
Returns the localized textual representation for a shortcut value.
</short>
<descr>
<p>
<var>ShortCutToText</var> is the counterpart to the TextToShortCut routine, and 
converts the numeric TShortCut value in ShortCut its textual representation. 
</p>
<p>
<var>ShortCut</var> is the <var>Word</var> value with the modifier keys and the 
key code OR'd together. The high-order byte contains the Shift/Ctrl/Alt/Meta 
modifier(s) for the shortcut. The low-order-byte contains the virtual key code 
for the shortcut.
</p>
<p>
The return value contains localized versions of text for the modifiers and 
the key cap used in the shortcut. For example:
</p>
<code>
Ctrl+V
Ctrl+Alt+Del
^V
Shift+F9
Alt+G
Meta+Q
</code>
<p>
Use ShortCutToTextRaw to get the text for a shortcut without localization.
</p>
</descr>
<seealso>
<link id="ShortCutToTextRaw"/>
<link id="TextToShortCut"/>
<link id="#rtl.classes.TShortCut">TShortCut</link>
</seealso>
</element>
<element name="ShortCutToText.Result">
<short>
Localized text value for the specified shortcut.
</short>
</element>
<element name="ShortCutToText.ShortCut">
<short>
TShortCut instance with the numeric shift modifier and key code handled in the 
routine.
</short>
</element>

<element name="ShortCutToTextRaw">
<short>
Converts a shortcut value to its text representation without localization.
</short>
<descr>
<p>
<var>ShortCutToTextRaw</var> is similar to ShortCutToText, but does not use 
localization for the modifiers or key caps found in the shortcut.
</p>
<p>
See <link id="ShortCutToText">ShortCutToText</link> for more information.
</p>
<p>
Use <var>TextToShortCutRaw</var> to create a shortcut for text which does not 
use localization.
</p>
</descr>
<seealso/>
</element>
<element name="ShortCutToTextRaw.Result">
<short>Non-localized text value for the specified shortcut.</short>
</element>
<element name="ShortCutToTextRaw.ShortCut">
<short>Shortcut value converted in the method.</short>
</element>

<element name="TextToShortCut">
<short>
Converts the textual representation for a shortcut to its TShortCut value.
</short>
<descr>
<p>
<var>TextToShortCut</var> is a <var>TShortcut</var> function used to convert 
the string representation for a shortcut (or accelerator) to a TShortCut 
instance.
</p>
<p>
<var>ShortCutText</var> contains the text which represents a key or a key 
combination used as a shortcut in an application. It can contain optional key 
modifier(s) as well as a key caption. For example:
</p>
<code>
Ctrl+V
Ctrl+Alt+Del
^V
Shift+F9
Alt+G
Meta+Q
</code>
<p>
Recognized key modifiers include:
</p>
<code>
Alt
Ctrl or ^
Meta
Shift
</code>
<p>
Recognized key captions include the standard key caps for your keyboard and the 
localized versions of the following:
</p>
<dl>
<dt>BkSp</dt>
<dd>VK_BACK</dd>
<dt>Del</dt>
<dd>VK_DELETE</dd>
<dt>Down</dt>
<dd>VK_DOWN</dd>
<dt>End</dt>
<dd>VK_END</dd>
<dt>Enter</dt>
<dd>VK_RETURN</dd>
<dt>Esc</dt>
<dd>VK_ESCAPE</dd>
<dt>Help</dt>
<dd>VK_HELP</dd>
<dt>Home</dt>
<dd>VK_HOME</dd>
<dt>Ins</dt>
<dd>VK_INSERT</dd>
<dt>Left</dt>
<dd>VK_LEFT</dd>
<dt>PgDn</dt>
<dd>VK_NEXT</dd>
<dt>PgUp</dt>
<dd>VK_PRIOR</dd>
<dt>Right</dt>
<dd>VK_RIGHT</dd>
<dt>Space</dt>
<dd>VK_SPACE</dd>
<dt>Tab</dt>
<dd>VK_TAB</dd>
<dt>Up</dt>
<dd>VK_UP</dd>
</dl>
<p>
The return value is a TShortCut instance with the numeric value used to 
represent both the Shift/Ctrl/Alt modifier and the key code for the shortcut. 
It consists of the Shift and Key values OR'd together.
</p>
<p>
Use TextToShortCutRaw to convert a non-localized string to it TShortCut 
equivalent.
</p>
<p>
Use ShortCutToText to reverse the process.
</p>
</descr>
<seealso>
<link id="TextToShortCutRaw"/>
<link id="ShortCutToText"/>
<link id="ShortCutToTextRaw"/>
<link id="#rtl.classes.TShortCut">TShortCut</link>
</seealso>
</element>
<element name="TextToShortCut.Result">
<short>
TShortcut value for the specified text.
</short>
</element>
<element name="TextToShortCut.ShortCutText">
<short>
Text converted to a shortcut value in the routine.
</short>
</element>

<element name="TextToShortCutRaw">
<short>
Converts the non-localized textual representation for a shortcut to a TShortCut 
value.
</short>
<descr>
<p>
<var>TextToShortCutRaw</var> is similar to <var>TextToShortCut</var>, but does 
not handle or use localized versions of modifiers or key caps in 
<var>ShortCutText</var>.
</p>
<p>
See <link id="TextToShortCut">TextToShortCut</link> for more information.
</p>
<p>
Use ShortCutToTextRaw to reverse the process.
</p>
</descr>
<seealso>
<link id="ShortCutToTextRaw"/>
<link id="ShortCutToText"/>
<link id="TextToShortCut"/>
<link id="#rtl.classes.TShortCut">TShortCut</link>
</seealso>
</element>
<element name="TextToShortCutRaw.Result">
<short>
TShortcut value for the specified text.
</short>
</element>
<element name="TextToShortCutRaw.ShortCutText">
<short>
Text converted to a shortcut value in the routine.
</short>
</element>

<element name="GetCompleteText">
<short>
Finds a string in a list, given its first few characters.
</short>
<descr/>
<seealso/>
</element>
<element name="GetCompleteText.Result">
<short>The found string.</short>
</element>
<element name="GetCompleteText.sText">
<short>The begin of the string to find.</short>
</element>
<element name="GetCompleteText.iSelStart">
<short>The list index where the search should start.</short>
</element>
<element name="GetCompleteText.bCaseSensitive">
<short><b>True</b> means case-sensitive comparison.</short>
</element>
<element name="GetCompleteText.bSearchAscending">
<short><b>True</b> means search ascending from iSelStart.</short>
</element>
<element name="GetCompleteText.slTextList">
<short>The list to search.</short>
</element>

<element name="IsEditableTextKey">
<short>
Indicates if the specified key code has a value allowed in an editable text 
string.
</short>
<descr/>
<seealso/>
</element>
<element name="IsEditableTextKey.Result">
<short/>
</element>
<element name="IsEditableTextKey.Key">
<short>The virtual key code examined in the routine.</short>
</element>

<element name="TSendApplicationMessageFunction">
<short>Hook used to prevent circular unit references.</short>
<descr/>
<seealso/>
</element>
<element name="TSendApplicationMessageFunction.Result">
<short/>
</element>
<element name="TSendApplicationMessageFunction.Msg">
<short/>
</element>
<element name="TSendApplicationMessageFunction.WParam">
<short/>
</element>
<element name="TSendApplicationMessageFunction.LParam">
<short/>
</element>

<element name="TOwnerFormDesignerModifiedProc">
<short>Hook used to prevent circular unit references.</short>
<descr/>
<seealso/>
</element>
<element name="TOwnerFormDesignerModifiedProc.AComponent">
<short>Component for the change notification.</short>
</element>

<element name="SendApplicationMessageFunction">
<short>
Function used to send an application message using the specified parameter 
values.
</short>
<descr/>
<seealso/>
</element>

<element name="OwnerFormDesignerModifiedProc">
<short>
Routine used to notify the form designer which owns the specified component 
when it has been changed.
</short>
<descr/>
<seealso>
<link id="TOwnerFormDesignerModifiedProc"/>
</seealso>
</element>
<element name="OwnerFormDesignerModifiedProc.AComponent">
<short>
Modified component that needs to be updated on its form design surface.
</short>
</element>

<element name="SendApplicationMessage">
<short>
Sends an application message using the specified parameter values.
</short>
<descr/>
<errors/>
<seealso/>
</element>
<element name="SendApplicationMessage.Result">
<short/>
</element>
<element name="SendApplicationMessage.Msg">
<short/>
</element>
<element name="SendApplicationMessage.WParam">
<short/>
</element>
<element name="SendApplicationMessage.LParam">
<short/>
</element>

<element name="OwnerFormDesignerModified">
<short>
Executes the routine which notifies the form designer when the specified 
component has been changed.
</short>
<descr>
<p>
The <file>forms.pp</file> unit provides a private implementation in its 
IfOwnerIsFormThenDesignerModified routine which is assigned to the variable 
during unit initialization.
</p>
</descr>
<seealso/>
</element>
<element name="OwnerFormDesignerModified.AComponent">
<short>
The modified component which needs to be updated on its form design surface.
</short>
</element>

<element name="FreeThenNil">
<short>
Frees the TObject instance (when assigned) before setting the reference to 
<b>Nil</b>.
</short>
<descr>
<p>
Calls the FreeThenNil routine in the <file>lazutilities.pas</file> unit from 
the <file>lazutils</file> package.
</p>
</descr>
<version>
Deprecated in LCL version 3.0. Use the FreeThenNil routine in the 
<file>LazUtilities.pas</file> unit from the <file>LazUtils</file> package 
instead.
</version>
<seealso>
<link id="#lazutils.lazutilities.FreeThenNil">LazUtilities.FreeThenNil</link>
</seealso>
</element>
<element name="FreeThenNil.obj">
<short>The object reference freed and <b>Nil</b>'d in the routine.</short>
</element>

<element name="CompareRect">
.
<short>
Deprecated. Indicates if the specified rectangle pointers have the same 
coordinate values.
</short>
<descr/>
<version>
Deprecated in LCL version 3.99 (June 2023). Use the SameRect routine in the 
<file>graphmath.pp</file> unit (LazUtils) instead.
</version>
<seealso/>
</element>
<element name="CompareRect.Result">
<short>
<b>True</b> when the top, left, bottom, and right values in each rectangle 
are the same.
</short>
</element>
<element name="CompareRect.R1">
<short>Pointer to the first rectangle for the comparison.</short>
</element>
<element name="CompareRect.R2">
<short>Pointer to the second rectangle for the comparison.</short>
</element>

<element name="RegisterInterfaceInitializationHandler">
<short>
Registers an initialization routine needed before the LCL is initialized.
</short>
<descr/>
<seealso/>
</element>
<element name="RegisterInterfaceInitializationHandler.p">
<short>Procedure registered in the routine.</short>
</element>

<element name="CallInterfaceInitializationHandlers">
<short>Calls each of the registered initialization handlers.</short>
<descr/>
<seealso/>
</element>

<element name="RegisterInterfaceFinalizationHandler">
<short>
Registers an finalization routine needed after the LCL has been finalized.
</short>
<descr/>
<errors/>
<seealso/>
</element>
<element name="RegisterInterfaceFinalizationHandler.p">
<short/>
</element>

<element name="CallInterfaceFinalizationHandlers">
<short>Calls each of the registered finalization handlers.</short>
<descr/>
<errors/>
<seealso/>
</element>

<element name="OffsetRect">
<short>
Deprecated. Increments the Top, Left and Bottom, Right rectangle coordinates 
by the specified amounts.
</short>
<descr>
<p>
Deprecated. Use the OffsetRect function in the RTL <file>types.pp</file> unit 
instead.
</p>
</descr>
<version>
Deprecated in LCL version 3.0.
</version>
<seealso>
<link id="#rtl.types.OffsetRect">RTL.Types.OffsetRect</link>
</seealso>
</element>
<element name="OffsetRect.Result"/>
<element name="OffsetRect.ARect"/>
<element name="OffsetRect.dx"/>
<element name="OffsetRect.dy"/>

<element name="MoveRect">
<short>
Deprecated. Use GraphMath.MoveRect in the <file>LazUtils</file> package 
instead.
</short>
<descr/>
<version>
Deprecated in LCL version 3.0.
</version>
<seealso>
<link id="#lazutils.graphmath.MoveRect">LazUtils.GraphMath.MoveRect</link>
</seealso>
</element>
<element name="MoveRect.ARect"/>
<element name="MoveRect.x"/>
<element name="MoveRect.y"/>

<element name="MoveRectToFit">
<short>
Deprecated. Use GraphMath.MoveRectToFit in the <file>LazUtils</file> package 
instead.
</short>
<descr/>
<version>
Deprecated in LCL version 3.0.
</version>
<seealso>
<link id="#lazutils.graphmath.MoveRectToFit">LazUtils.GraphMath.MoveRectToFit</link>
</seealso>
</element>
<element name="MoveRectToFit.ARect"/>
<element name="MoveRectToFit.MaxRect"/>

<element name="MakeMinMax">
<short>
Deprecated. Use GraphMath.MakeMinMax in the <file>LazUtils</file> package 
instead.
</short>
<descr/>
<version>
Deprecated in LCL version 3.0.
</version>
<seealso>
<link id="#lazutils.graphmath.MakeMinMax">LazUtils.GraphMath.MakeMinMax</link>
</seealso>
</element>
<element name="MakeMinMax.i1"/>
<element name="MakeMinMax.i2"/>

<element name="CalculateLeftTopWidthHeight">
<short>
Deprecated. Use GraphMath.CalculateLeftTopWidthHeight in the 
<file>LazUtils</file> package instead.
</short>
<descr/>
<version>
Deprecated in LCL version 3.0.
</version>
<seealso>
<link id="#lazutils.graphmath.CalculateLeftTopWidthHeight">LazUtils.GraphMath.CalculateLeftTopWidthHeight</link>
</seealso>
</element>
<element name="CalculateLeftTopWidthHeight.X1"/>
<element name="CalculateLeftTopWidthHeight.Y1"/>
<element name="CalculateLeftTopWidthHeight.X2"/>
<element name="CalculateLeftTopWidthHeight.Y2"/>
<element name="CalculateLeftTopWidthHeight.Left"/>
<element name="CalculateLeftTopWidthHeight.Top"/>
<element name="CalculateLeftTopWidthHeight.Width"/>
<element name="CalculateLeftTopWidthHeight.Height"/>

<element name="DeleteAmpersands">
<short>
Removes all Ampersand ('&amp;') characters Str, and return the position for 
the first occurrence.
</short>
<descr>
<p>
<var>DeleteAmpersands</var> is an <var>Integer</var> function used to remove 
all occurrences of the Ampersand character in Str. The return value contains 
the position in Str where the first occurrence of the of the character was 
found.
</p>
<p>
Double Ampersands (&amp;&amp;) are converted to a single &amp; character in 
Str.
</p>
<p>
DeleteAmpersands can be used to remove the prefix used for accelerator keys 
in button, tool bar, and menu captions.
</p>
</descr>
<errors/>
<seealso/>
</element>
<element name="DeleteAmpersands.Result">
<short>Position where the first ampersand character was found.</short>
</element>
<element name="DeleteAmpersands.Str">
<short>String with values converted in the method.</short>
</element>

<element name="RemoveAmpersands">
<short>
Removes single Ampersand characters, and returns the converted value.
</short>
<descr>
<p>
<var>RemoveAmpersands</var> is an overloaded function used to remove all 
occurrences of a single Ampersand (&amp;) character from the specified value. 
It provides variants that operate on String and PChar types. The return value 
contains the original value after all single Ampersand characters have been 
removed. Double Ampersand (&amp;&amp;) characters are converted into a single 
Ampersand character.
</p>
<p>
Use <var>DeleteAmpersands</var> to remove Ampersand character in the original 
String value.
</p>
</descr>
<seealso/>
</element>
<element name="RemoveAmpersands.Result">
<short>Value after single Ampersand characters are removed.</short>
</element>
<element name="RemoveAmpersands.ASource">
<short>String with the values examined in the routine.</short>
</element>
<element name="RemoveAmpersands.Src">
<short>PChar value examined in the routine.</short>
</element>
<element name="RemoveAmpersands.LineLength">
<short>Length of the value in Src.</short>
</element>

<element name="CompareHandles">
<short>
Compares two Handles, returning the relative order for the handle values.
</short>
<descr>
<p>
The return value contains the following:
</p>
<dl>
<dt>-1</dt>
<dd>h1 has a lower value than h2.</dd>
<dt>0</dt>
<dd>h1 and h2 have the same value.</dd>
<dt>1</dt>
<dd>h1 has a higher value than h2.</dd>
</dl>
</descr>
<seealso/>
</element>
<element name="CompareHandles.Result">
<short>Relative order for the compared handle values.</short>
</element>
<element name="CompareHandles.h1">
<short>First handle for the comparison.</short>
</element>
<element name="CompareHandles.h2">
<short>Second handle for the comparison.</short>
</element>

<element name="ComparePoints">
<short>
Compares the specified TPoint values to get their relative order.
</short>
<descr>
<p>
<var>ComparePoints</var> is an <var>Integer</var> function used to compare 
the coordinates in the specified <var>TPoint</var> instances to determine 
their relative order. The return value contains -1, 0, or 1 for the following 
conditions:
</p>
<dl>
<dt>-1</dt>
<dd>p1.y is smaller than p2.y, or p1.x is smaller than p2.x.</dd>
<dt>0</dt>
<dd>p1 and p2 have the same x and y values.</dd>
<dt>1</dt>
<dd>p1.y is larger than p2.y, or p1.x is larger than p2.x.</dd>
</dl>
</descr>
<seealso/>
</element>
<element name="ComparePoints.Result">
<short>Relative order for the compared TPoint values.</short>
</element>
<element name="ComparePoints.p1">
<short>First TPoint instance for the comparison.</short>
</element>
<element name="ComparePoints.p2">
<short>Second TPoint instance for the comparison.</short>
</element>

<element name="CompareCaret">
<short>See ComparePoints.</short>
<descr>
<p>
See ComparePoints.
</p>
</descr>
<seealso>
<link id="ComparePoints"/>
</seealso>
</element>
<element name="CompareCaret.Result">
<short/>
</element>
<element name="CompareCaret.FIrstCaret">
<short/>
</element>
<element name="CompareCaret.SecondCaret">
<short/>
</element>

<!-- TODO: Modified in c1274517. -->
<!-- TODO: Needs See Also links to lazloggerbase,DebugLogger (not in fpdoc). -->
<element name="RaiseGDBException">
<short>
Deprecated. Use LazTracer.RaiseGDBException instead.
</short>
<descr>
<p>
Raises a catchable exception.
</p>
<p>
Normally, GDB does not catch FPC Exception objects. This procedure raises a 
standard divide by zero exception which is caught by GDB.
</p>
<p>
Calls the RaiseGDBException routine in <file>LazTracer</file>.
</p>
</descr>
<version>
Deprecated in LCL version 3.99 (Apr 2024).
</version>
<seealso>
<link id="#lazutils.laztracer.RaiseGDBException">LazTracer.RaiseGDBException</link>
</seealso>
</element>
<element name="RaiseGDBException.Msg">
<short>
Message for the catchable exception.
</short>
</element>

<element name="DebugLn">
<short>
Deprecated. Use DebugLogger.DebugLn instead.
</short>
<descr>
<p>
Overloaded routine used to write a number of strings to the debug output.
</p>
<p>
Calls the DebugLn method in the DebugLogger unit property implemented in 
<file>LazLoggerBase.pas</file> (LazUtils).
</p>
</descr>
<version>
Deprecated in LCL version 3.99 (Apr 2024).
</version>
<seealso>
<!-- <link id="#lazutils.lazloggerbase.DebugLogger">DebugLogger</link> -->
<link id="#lazutils.lazloggerbase.TLazLogger.DebugLn">TLazLogger.DebugLn</link>
</seealso>
</element>
<element name="DebugLn.S">
<short>
A single string, or a Format string when followed by an argument list.
</short>
</element>
<element name="DebugLn.Args">
<short>
Writes the formatted dump of the typed arguments.
</short>
</element>
<element name="DebugLn.s1"/>
<element name="DebugLn.s2"/>
<element name="DebugLn.s3"/>
<element name="DebugLn.s4"/>
<element name="DebugLn.s5"/>
<element name="DebugLn.s6"/>
<element name="DebugLn.s7"/>
<element name="DebugLn.s8"/>
<element name="DebugLn.s9"/>
<element name="DebugLn.s10"/>
<element name="DebugLn.s11"/>
<element name="DebugLn.s12"/>
<element name="DebugLn.s13"/>
<element name="DebugLn.s14"/>
<element name="DebugLn.s15"/>
<element name="DebugLn.s16"/>

<element name="DebugLnEnter">
<short>
Deprecated. Use Use DebugLogger.DebugLnEnter instead.
</short>
<descr>
<p>
Overloaded routine used to write the specified argument values to the debugger. 
Increases the indentation level for subsequent debugger output.
</p>
</descr>
<version>
Deprecated in LCL version 3.99 (Apr 2024).
</version>
<seealso>
<!-- <link id="#lazutils.lazloggerbase.DebugLogger">DebugLogger</link> -->
<link id="#lazutils.lazloggerbase.TLazLogger.DebugLnEnter">TLazLogger.DebugLnEnter</link>
<link id="#lazutils.lazloggerbase.TLazLogger.DebugLnExit">TLazLogger.DebugLnExit</link>
</seealso>
</element>
<element name="DebugLnEnter.s"/>
<element name="DebugLnEnter.Args"/>
<element name="DebugLnEnter.s1"/>
<element name="DebugLnEnter.s2"/>
<element name="DebugLnEnter.s3"/>
<element name="DebugLnEnter.s4"/>
<element name="DebugLnEnter.s5"/>
<element name="DebugLnEnter.s6"/>
<element name="DebugLnEnter.s7"/>
<element name="DebugLnEnter.s8"/>
<element name="DebugLnEnter.s9"/>
<element name="DebugLnEnter.s10"/>
<element name="DebugLnEnter.s11"/>
<element name="DebugLnEnter.s12"/>
<element name="DebugLnEnter.s13"/>
<element name="DebugLnEnter.s14"/>
<element name="DebugLnEnter.s15"/>
<element name="DebugLnEnter.s16"/>
<element name="DebugLnEnter.s17"/>
<element name="DebugLnEnter.s18"/>

<element name="DebugLnExit">
<short>
Deprecated. Use Use DebugLogger.DebugLnExit instead.
</short>
<descr>
<p>
Overloaded routine used to write the specified argument values to the debugger. 
Decreases the indentation level for subsequent debugger output.
</p>
</descr>
<version>
Deprecated in LCL version 3.99 (Apr 2024).
</version>
<seealso>
<!-- <link id="#lazutils.lazloggerbase.DebugLogger">DebugLogger</link> -->
<link id="#lazutils.lazloggerbase.TLazLogger.DebugLnEnter">TLazLogger.DebugLnEnter</link>
<link id="#lazutils.lazloggerbase.TLazLogger.DebugLnExit">TLazLogger.DebugLnExit</link>
</seealso>
</element>
<element name="DebugLnExit.s"/>
<element name="DebugLnExit.Args"/>
<element name="DebugLnExit.s1"/>
<element name="DebugLnExit.s2"/>
<element name="DebugLnExit.s3"/>
<element name="DebugLnExit.s4"/>
<element name="DebugLnExit.s5"/>
<element name="DebugLnExit.s6"/>
<element name="DebugLnExit.s7"/>
<element name="DebugLnExit.s8"/>
<element name="DebugLnExit.s9"/>
<element name="DebugLnExit.s10"/>
<element name="DebugLnExit.s11"/>
<element name="DebugLnExit.s12"/>
<element name="DebugLnExit.s13"/>
<element name="DebugLnExit.s14"/>
<element name="DebugLnExit.s15"/>
<element name="DebugLnExit.s16"/>
<element name="DebugLnExit.s17"/>
<element name="DebugLnExit.s18"/>

<element name="DbgOut">
<short>
Deprecated. Use DebugLogger.DbgOut instead.
</short>
<descr>
<p>
Signals the OnDbgOut event handler for the debug logger class instance.
</p>
<p>
Calls the DbgOut method in the DebugLogger unit property implemented in 
<file>LazLoggerBase.pas</file> (LazUtils).
</p>
</descr>
<version>
Deprecated in LCL version 3.99 (Apr 204).
</version>
<seealso>
<!-- <link id="#lazutils.lazloggerbase.DebugLogger">DebugLogger</link> -->
<link id="#lazutils.lazloggerbase.TLazLogger.DbgOut">TLazLogger.DbgOut</link>
</seealso>
</element>
<element name="DbgOut.s"/>
<element name="DbgOut.Args"/>
<element name="DbgOut.s1"/>
<element name="DbgOut.s2"/>
<element name="DbgOut.s3"/>
<element name="DbgOut.s4"/>
<element name="DbgOut.s5"/>
<element name="DbgOut.s6"/>
<element name="DbgOut.s7"/>
<element name="DbgOut.s8"/>
<element name="DbgOut.s9"/>
<element name="DbgOut.s10"/>
<element name="DbgOut.s11"/>
<element name="DbgOut.s12"/>

<!-- TODO: Some overloads are still valid. -->
<element name="DbgS">
<short>
Formats debug output for various argument types (overloaded).
</short>
<descr>
<dl>
<dt>TTextMetric</dt>
<dd>
Generates a delimited list of member names and values for the text metric. For 
example: 'tmHeight: 16 tmAscent: 2 tmDescent: 2 ...'.
</dd>
<dt>TScrollInfo</dt>
<dd>
Generates a delimited list of member names and values for the scroll 
information. For example: 'Pos: 2 Min: 1 Max: 10 Page: 1 TrackPos: 2' or 
'(no scrollinfo)'.
</dd>
<dt>Variant</dt>
<dd>
Returns the string representation for the variant value. Returns 
'&lt;empty&gt;' or '&lt;null&gt;' for variants with the varEmpty or varNull 
types (respectively).
</dd>
</dl>
<remark>
Other overloaded variants of DbgS have been deprecated in LCL version 3.99 (as 
of Apr 2024). Use the DbgS routine from LazLoggerIntf (lazloggerbase, 
lazloggerfile, lazloggerdummy) for these variants instead.
</remark>
</descr>
<seealso>
<link id="#lazutils.lazloggerbase.DbgS">LazLoggerBase.DbgS</link>
</seealso>
</element>
<element name="DbgS.Result">
<short>
String with the content representing the specified argument.
</short>
</element>
<element name="DbgS.ATM">
<short>
TTextMetric instance with member values stored in the result.
</short>
</element>
<element name="DbgS.AScrollInfo">
<short>
TScrollInfo instance with member values stored in the result.
</short>
</element>
<element name="DbgS.AVariant">
<short>
TVarData instance with member values stored in the result.
</short>
</element>
<element name="DbgS.s"/>
<element name="DbgS.q"/>
<element name="DbgS.MaxDecimals"/>
<element name="DbgS.m"/>
<element name="DbgS.c"/>
<element name="DbgS.i"/>
<element name="DbgS.r"/>
<element name="DbgS.p"/>
<element name="DbgS.e"/>
<element name="DbgS.b"/>
<element name="DbgS.Shift"/>
<element name="DbgS.i1"/>
<element name="DbgS.i2"/>
<element name="DbgS.i3"/>
<element name="DbgS.i4"/>
<element name="DbgS.ASize"/>


<element name="DbgSName">
<short>
Deprecated. Use DbgSName from LazLoggerIntf instead.
</short>
<descr>
<p>
Returns the component or class name.
</p>
</descr>
<version>
Deprecated in LCL version 3.99 (Apr 2024).
</version>
<seealso>
<!-- <link id="#lazutils.lazloggerbase.DebugLogger">DebugLogger</link> -->
<link id="#lazutils.lazloggerbase.DbgSName">LazLoggerBase.DbgSName</link>
</seealso>
</element>
<element name="DbgSName.Result"/>
<element name="DbgSName.p"/>

<element name="DbgStr">
<short>
Deprecated. Use DebugLogger.DbgStr instead.
</short>
<descr>
<p>
Converts control characters, or characters above #126 into #hex format.
</p>
</descr>
<version>
Deprecated in LCL version 3.99 (Apr 2024).
</version>
<seealso>
<!-- <link id="#lazutils.lazloggerbase.DebugLogger">DebugLogger</link> -->
<link id="#lazutils.lazloggerbase.DbgStr">LazLoggerBase.DbgStr</link>
</seealso>
</element>
<element name="DbgStr.Result"/>
<element name="DbgStr.StringWithSpecialChars"/>

<element name="DbgWideStr">
<short>
Deprecated. Use DbgWideStr from LazLoggerIntf instead.
</short>
<descr>
<p>
Converts control characters, or characters above #126 into #hex format.
</p>
</descr>
<version>
Deprecated in LCL version 3.99 (Apr 2024).
</version>
<seealso>
<!-- <link id="#lazutils.lazloggerbase.DebugLogger">DebugLogger</link> -->
<link id="#lazutils.lazloggerbase.DbgWideStr">LazLoggerBase.DbgWideStr</link>
</seealso>
</element>
<element name="DbgWideStr.Result"/>
<element name="DbgWideStr.StringWithSpecialChars"/>

<element name="dbgMemRange">
<short>
Deprecated. Use DbgMemRange from LazLoggerIntf instead.
</short>
<descr>
<p>
Provides an dump of a memory region in hexadecimal format.
</p>
</descr>
<version>
Deprecated in LCL version 3.99 (Apr 2024).
</version>
<seealso>
<!-- <link id="#lazutils.lazloggerbase.DebugLogger">DebugLogger</link> -->
<link id="#lazutils.lazloggerbase.DbgMemRange">LazLoggerBase.DbgMemRange</link>
</seealso>
</element>
<element name="dbgMemRange.Result"/>
<element name="dbgMemRange.P"/>
<element name="dbgMemRange.Count"/>
<element name="dbgMemRange.Width"/>

<element name="dbgMemStream">
<short>
Deprecated. Use dbgMemStream from LazLoggerIntf instead.
</short>
<descr>
<p>
Provides a hex dump of an memory stream.
</p>
<p>
The dump starts at the <b>current</b> stream position, the position moves to 
the end of the dumped range.
</p>
</descr>
<version>
Deprecated in LCL version 3.99 (Apr 2024).
</version>
<seealso>
<!-- <link id="#lazutils.lazloggerbase.DebugLogger">DebugLogger</link> -->
<link id="#lazutils.lazloggerbase.DbgMemStream">LazLoggerBase.DbgMemStream</link>
</seealso>
</element>
<element name="dbgMemStream.Result"/>
<element name="dbgMemStream.MemStream"/>
<element name="dbgMemStream.Count"/>

<element name="dbgObjMem">
<short>
Deprecated. Use DbgObjMem from LazLoggerIntf instead.
</short>
<descr>
<p>
Provides an hex dump of an TObject.
</p>
</descr>
<version>
Deprecated in LCL version 3.99 (Apr 2024).
</version>
<seealso>
<!-- <link id="#lazutils.lazloggerbase.DebugLogger">DebugLogger</link> -->
<link id="#lazutils.lazloggerbase.DbgObjMem">LazLoggerBase.DbgObjMem</link>
</seealso>
</element>
<element name="dbgObjMem.Result"/>
<element name="dbgObjMem.AnObject"/>

<element name="dbgHex">
<short>
Deprecated. Use DbgHex from LazLoggerIntf instead.
</short>
<descr>
<p>
Provides a hex dump of an Int64 value, (sign + absolute value).
</p>
</descr>
<version>
Deprecated in LCL version 3.99 (Apr 2024).
</version>
<seealso>
<!-- <link id="#lazutils.lazloggerbase.DebugLogger">DebugLogger</link> -->
<link id="#lazutils.lazloggerbase.DbgHex">LazLoggerBase.DbgHex</link>
</seealso>
</element>
<element name="dbgHex.Result"/>
<element name="dbgHex.i"/>

<element name="DbgSWindowPosFlags">
<short>Provides a dump of SetWindowPosition flags.</short>
<descr/>
<seealso/>
</element>
<element name="DbgSWindowPosFlags.Result">
<short/>
</element>
<element name="DbgSWindowPosFlags.Flags">
<short/>
</element>

<element name="DbgsVKCode">
<short>Converts a virtual key code to its String representation.</short>
<descr/>
<seealso/>
</element>
<element name="DbgsVKCode.Result">
<short/>
</element>
<element name="DbgsVKCode.c">
<short/>
</element>

<element name="DbgOutThreadLog">
<short>
Writes a debugging message to the log file for the current thread.
</short>
<descr/>
<seealso/>
</element>
<element name="DbgOutThreadLog.Msg">
<short/>
</element>

<element name="DebuglnThreadLog">
<short>
Writes a debugging message to the log file for the current thread which 
includes the thread identifier.
</short>
<descr/>
<seealso/>
</element>
<element name="DebuglnThreadLog.Msg">
<short/>
</element>
<element name="DebuglnThreadLog.Args">
<short/>
</element>

<element name="DbgSaveData">
<short>Writes data to a file.</short>
<descr/>
<seealso/>
</element>
<element name="DbgSaveData.FileName">
<short/>
</element>
<element name="DbgSaveData.AData">
<short/>
</element>
<element name="DbgSaveData.ADataSize">
<short/>
</element>

<element name="DbgAppendToFile">
<short>Appends a line to the given file.</short>
<descr/>
<seealso/>
</element>
<element name="DbgAppendToFile.FileName">
<short/>
</element>
<element name="DbgAppendToFile.S">
<short/>
</element>

<element name="DbgAppendToFileWithoutLn">
<short>Appends (pre-formatted) text to an file.</short>
<descr/>
<errors>
</errors>
<seealso/>
</element>
<element name="DbgAppendToFileWithoutLn.FileName">
<short/>
</element>
<element name="DbgAppendToFileWithoutLn.S">
<short/>
</element>

<element name="CloseDebugOutput">
<short>
Deprecated. Use DebugLogger.Finish instead.
</short>
<descr>
<p>
Calls the Finish method for the debug logger class instance.
</p>
</descr>
<version>
Deprecated in LCL version 3.99 (Apr 204).
</version>
<seealso>
<!-- <link id="#lazutils.lazloggerbase.DebugLogger">DebugLogger</link> -->
<link id="#lazutils.lazloggerbase.TLazLogger.Finish">TLazLogger.Finish</link>
</seealso>
</element>

<element name="ClassCase">
<short>Indicates if a TClass instance is found in the specified array.</short>
<descr/>
<seealso/>
</element>
<element name="ClassCase.Result">
<short>
Ordinal position in ACase where the TClass instance was found, or -1 when not 
found.
</short>
</element>
<element name="ClassCase.AClass">
<short>TClass instance to locate in ACase.</short>
</element>
<element name="ClassCase.ACase">
<short>Array of TClass instances to examine in the routine.</short>
</element>
<element name="ClassCase.ADescendant">
<short>
<b>True</b> to consider descendants of AClass as a match in the routine.
</short>
</element>

<element name="UTF16CharacterLength">
<short>
Deprecated. Use the <var>LazUTF16.UTF16CharacterLength</var> routine instead.
</short>
<version>
Deprecated in LCL version 4.0 (July 2023).
</version>
<seealso>
<link id="#lazutils.lazutf16.UTF16CharacterLength"/>
</seealso>
</element>
<element name="UTF16CharacterLength.Result"/>
<element name="UTF16CharacterLength.p"/>

<element name="UTF16Length">
<short>
Deprecated. Use the <var>LazUTF16.UTF16Length</var> routine instead.
</short>
<version>
Deprecated in LCL version 4.0 (July 2023).
</version>
<seealso>
<link id="#lazutils.lazutf16.UTF16Length"/>
</seealso>
</element>
<element name="UTF16Length.Result"/>
<element name="UTF16Length.s"/>
<element name="UTF16Length.p"/>
<element name="UTF16Length.WordCount"/>

<element name="UTF16CharacterToUnicode">
<short>
Deprecated. Use the <var>LazUTF16.UTF16CharacterToUnicode</var> routine 
instead.
</short>
<version>
Deprecated in LCL version 4.0 (July 2023).
</version>
<seealso>
<link id="#lazutils.lazutf16.UTF16CharacterToUnicode"/>
</seealso>
</element>
<element name="UTF16CharacterToUnicode.Result"/>
<element name="UTF16CharacterToUnicode.p"/>
<element name="UTF16CharacterToUnicode.CharLen"/>

<element name="UnicodeToUTF16">
<short>
Deprecated. Use the <var>LazUTF16.UnicodeToUTF16</var> routine instead.
</short>
<version>
Deprecated in LCL version 4.0 (July 2023).
</version>
<seealso>
<link id="#lazutils.lazutf16.UnicodeToUTF16"/>
</seealso>
</element>
<element name="UnicodeToUTF16.Result">
<short/>
</element>
<element name="UnicodeToUTF16.u">
<short/>
</element>

<element name="CreateFirstIdentifier">
<short>
Deprecated.
</short>
<descr>
<p>
Use the <var>CreateFirstIdentifier</var> routine in the 
<file>lazutilities.pas</file> unit (<b>LazUtils</b>) instead.
</p>
</descr>
<version>
Deprecated in LCL version 3.99 (Apr 2024).
</version>
<seealso/>
</element>
<element name="CreateFirstIdentifier.Result"/>
<element name="CreateFirstIdentifier.Identifier"/>

<element name="CreateNextIdentifier">
<short>
Deprecated.
</short>
<descr>
<p>
Use the <var>CreateNextIdentifier</var> routine in the 
<file>lazutilities.pas</file> unit (<b>LazUtils</b>) instead.
</p>
</descr>
<version>
Deprecated in LCL version 3.99 (Apr 2024).
</version>
<seealso/>
</element>
<element name="CreateNextIdentifier.Result"/>
<element name="CreateNextIdentifier.Identifier"/>

<element name="IsFontNameDefault">
<short>
Indicates whether the specified font name contains 'default'.
</short>
<descr/>
<seealso/>
</element>
<element name="IsFontNameDefault.Result">
<short>
<b>True</b> when AName contains 'default'.
</short>
</element>
<element name="IsFontNameDefault.AName">
<short>
Font name examined in the routine.
</short>
</element>

<element name="AddCmdLineParamDesc">
<short>
Adds the help displayed for a command line parameter (and options) to the 
specified TStringList instance.
</short>
<descr>
<p>
<var>AddCmdLineParamDesc</var> stores the values from <var>aParamOpts</var> and 
<var>aDescr</var> as separate lines appended to the string list in 
<var>aText</var>. Multiple values in aParamOpts are combined into a 
comma-delimited list and added as a single line to AText. aDescr is appended to 
aText as the last entry.
</p>
<p>
No actions are performed in the routine if aParamOpts is an empty array (Length 
= 0).
</p>
</descr>
<version>
Added in LCL 4.0.
</version>
<seealso/>
</element>
<element name="AddCmdLineParamDesc.aText">
<short>
TStringList instance where the formatted help output is stored.
</short>
</element>
<element name="AddCmdLineParamDesc.aParamOpts">
<short>
Array with the list of parameters / options for the generated help content. 
Normally contains the short and/or long variants of the command line switch(es) 
and any argument(s).
</short>
</element>
<element name="AddCmdLineParamDesc.aDescr">
<short>
Descriptive text for the specified parameter(s).
</short>
</element>

</module>
<!-- LCLProc -->
</package>
</fpdoc-descriptions>
