<?xml version="1.0"?>
<fpdoc-descriptions>
  <!--  
   $Id: sysutils.xml,v 1.12 2005/05/07 09:41:09 michael Exp $
    This file is part of the FPC documentation. -->
    Copyright (C) 1999, by Michael Van Canneyt 
  
    The FPC documentation is free text; you can redistribute it and/or 
    modify it under the terms of the GNU Library General Public License as 
    published by the Free Software Foundation; either version 2 of the 
    License, or (at your option) any later version. 
  
    The FPC Documentation is distributed in the hope that it will be useful, 
    but WITHOUT ANY WARRANTY; without even the implied warranty of 
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
    Library General Public License for more details. 
  
    You should have received a copy of the GNU Library General Public 
    License along with the FPC documentation; see the file COPYING.LIB.  If not, 
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
    Boston, MA 02111-1307, USA. 
 --&gt;
<package name="rtl">
    <module name="sysutils">
      <short>Various system utilities.</short>
      <!-- \FPCexampledir{sysutex} -->
      <descr>This documentation describes the <file>sysutils</file> unit. The <file>sysutils</file> unit
was started by Gertjan Schouten, and completed by Michael Van Canneyt.
It aims to be compatible to the Delphi <file>sysutils</file> unit, but in contrast
with  the latter, it is designed to work on multiple platforms. It is implemented
on all supported platforms.
</descr>
      <topic name="StringFunctions">
        <short>String functions</short>
        <descr>
          <p>Functions for handling strings.
</p>
          <table>
            <th>
              <td>Name</td>
              <td>Description</td>
            </th>
            <tr>
              <td>
                <link id="AnsiCompareStr"/>
              </td>
              <td>Compare two strings</td>
            </tr>
            <tr>
              <td>
                <link id="AnsiCompareText"/>
              </td>
              <td>Compare two strings, case insensitive</td>
            </tr>
            <tr>
              <td>
                <link id="AnsiExtractQuotedStr"/>
              </td>
              <td>Removes quotes from string</td>
            </tr>
            <tr>
              <td>
                <link id="AnsiLastChar"/>
              </td>
              <td>Get last character of string</td>
            </tr>
            <tr>
              <td>
                <link id="AnsiLowerCase"/>
              </td>
              <td>Convert string to all-lowercase</td>
            </tr>
            <tr>
              <td>
                <link id="AnsiQuotedStr"/>
              </td>
              <td>Qoutes a string</td>
            </tr>
            <tr>
              <td>
                <link id="AnsiStrComp"/>
              </td>
              <td>Compare strings case-sensitive</td>
            </tr>
            <tr>
              <td>
                <link id="AnsiStrIComp"/>
              </td>
              <td>Compare strings case-insensitive</td>
            </tr>
            <tr>
              <td>
                <link id="AnsiStrLComp"/>
              </td>
              <td>Compare L characters of strings case sensitive</td>
            </tr>
            <tr>
              <td>
                <link id="AnsiStrLIComp"/>
              </td>
              <td>Compare L characters of strings case insensitive</td>
            </tr>
            <tr>
              <td>
                <link id="AnsiStrLastChar"/>
              </td>
              <td>Get last character of string</td>
            </tr>
            <tr>
              <td>
                <link id="AnsiStrLower"/>
              </td>
              <td>Convert string to all-lowercase</td>
            </tr>
            <tr>
              <td>
                <link id="AnsiStrUpper"/>
              </td>
              <td>Convert string to all-uppercase</td>
            </tr>
            <tr>
              <td>
                <link id="AnsiUpperCase"/>
              </td>
              <td>Convert string to all-uppercase</td>
            </tr>
            <tr>
              <td>
                <link id="AppendStr"/>
              </td>
              <td>Append 2 strings</td>
            </tr>
            <tr>
              <td>
                <link id="AssignStr"/>
              </td>
              <td>Assign value of strings on heap</td>
            </tr>
            <tr>
              <td>
                <link id="CompareStr"/>
              </td>
              <td>Compare two strings case sensitive</td>
            </tr>
            <tr>
              <td>
                <link id="CompareText"/>
              </td>
              <td>Compare two strings case insensitive</td>
            </tr>
            <tr>
              <td>
                <link id="DisposeStr"/>
              </td>
              <td>Remove string from heap</td>
            </tr>
            <tr>
              <td>
                <link id="IsValidIdent"/>
              </td>
              <td>Is string a valid pascal identifier</td>
            </tr>
            <tr>
              <td>
                <link id="LastDelimiter"/>
              </td>
              <td>Last occurance of character in a string</td>
            </tr>
            <tr>
              <td>
                <link id="LeftStr"/>
              </td>
              <td>Get first N characters of a string</td>
            </tr>
            <tr>
              <td>
                <link id="LoadStr"/>
              </td>
              <td>Load string from resources</td>
            </tr>
            <tr>
              <td>
                <link id="LowerCase"/>
              </td>
              <td>Convert string to all-lowercase</td>
            </tr>
            <tr>
              <td>
                <link id="NewStr"/>
              </td>
              <td>Allocate new string on heap</td>
            </tr>
            <tr>
              <td>
                <link id="RightStr"/>
              </td>
              <td>Get last N characters of a string</td>
            </tr>
            <tr>
              <td>
                <link id="StrAlloc"/>
              </td>
              <td>Allocate memory for string</td>
            </tr>
            <tr>
              <td>
                <link id="StrBufSize"/>
              </td>
              <td>Reserve memory for a string</td>
            </tr>
            <tr>
              <td>
                <link id="StrDispose"/>
              </td>
              <td>Remove string from heap</td>
            </tr>
            <tr>
              <td>
                <link id="StrPas"/>
              </td>
              <td>Convert PChar to pascal string</td>
            </tr>
            <tr>
              <td>
                <link id="StrPCopy"/>
              </td>
              <td>Copy pascal string</td>
            </tr>
            <tr>
              <td>
                <link id="StrPLCopy"/>
              </td>
              <td>Copy N bytes of pascal string</td>
            </tr>
            <tr>
              <td>
                <link id="UpperCase"/>
              </td>
              <td>Convert string to all-uppercase</td>
            </tr>
          </table>
        </descr>
      </topic>
      <topic name="FormatStrings">
        <short>Formatting strings</short>
        <descr>
          <p>Functions for formatting strings.
</p>
          <table>
            <th>
              <td>Name</td>
              <td>Description</td>
            </th>
            <tr>
              <td>
                <link id="AdjustLineBreaks"/>
              </td>
              <td>Convert line breaks to line breaks for system</td>
            </tr>
            <tr>
              <td>
                <link id="FormatBuf"/>
              </td>
              <td>Format a buffer</td>
            </tr>
            <tr>
              <td>
                <link id="Format"/>
              </td>
              <td>Format arguments in string</td>
            </tr>
            <tr>
              <td>
                <link id="FmtStr"/>
              </td>
              <td>Format buffer</td>
            </tr>
            <tr>
              <td>
                <link id="QuotedStr"/>
              </td>
              <td>Quote a string</td>
            </tr>
            <tr>
              <td>
                <link id="StrFmt"/>
              </td>
              <td>Format arguments in a string</td>
            </tr>
            <tr>
              <td>
                <link id="StrLFmt"/>
              </td>
              <td>Format maximum L characters in a string</td>
            </tr>
            <tr>
              <td>
                <link id="TrimLeft"/>
              </td>
              <td>Remove whitespace at the left of a string</td>
            </tr>
            <tr>
              <td>
                <link id="TrimRight"/>
              </td>
              <td>Remove whitespace at the right of a string</td>
            </tr>
            <tr>
              <td>
                <link id="Trim"/>
              </td>
              <td>Remove whitespace at both ends of a string</td>
            </tr>
          </table>
        </descr>
      </topic>
      <topic name="FormatChars">
        <short>Date and time formatting characters</short>
        <descr>
          <p>Various date and time formatting routines accept a format string.
to format the date and or time. The following characters can be used
to control the date and time formatting:
</p>
          <dl>
            <dt>c</dt>
            <dd>shortdateformat + ' ' + shorttimeformat</dd>
            <dt>d</dt>
            <dd>day of month</dd>
            <dt>dd</dt>
            <dd>day of month (leading zero)</dd>
            <dt>ddd</dt>
            <dd>day of week (abbreviation)</dd>
            <dt>dddd</dt>
            <dd>day of week (full)</dd>
            <dt>ddddd</dt>
            <dd>shortdateformat</dd>
            <dt>dddddd</dt>
            <dd>longdateformat</dd>
            <dt>m</dt>
            <dd>month</dd>
            <dt>mm</dt>
            <dd>month (leading zero)</dd>
            <dt>mmm</dt>
            <dd>month (abbreviation)</dd>
            <dt>mmmm</dt>
            <dd>month (full)</dd>
            <dt>y</dt>
            <dd>year (2 digits)</dd>
            <dt>yy</dt>
            <dd>year (two digits)</dd>
            <dt>yyyy</dt>
            <dd>year (with century)</dd>
            <dt>h</dt>
            <dd>hour</dd>
            <dt>hh</dt>
            <dd>hour (leading zero)</dd>
            <dt>n</dt>
            <dd>minute</dd>
            <dt>nn</dt>
            <dd>minute (leading zero)</dd>
            <dt>s</dt>
            <dd>second</dd>
            <dt>ss</dt>
            <dd>second (leading zero)</dd>
            <dt>t</dt>
            <dd>shorttimeformat</dd>
            <dt>tt</dt>
            <dd>longtimeformat</dd>
            <dt>am/pm</dt>
            <dd>use 12 hour clock and display am and pm accordingly</dd>
            <dt>a/p</dt>
            <dd>use 12 hour clock and display a and p accordingly</dd>
            <dt>/</dt>
            <dd>insert date seperator</dd>
            <dt>:</dt>
            <dd>insert time seperator</dd>
            <dt>"xx"</dt>
            <dd>literal text</dd>
            <dt>'xx'</dt>
            <dd>literal text</dd>
            <dt>z</dt>
            <dd>milliseconds</dd>
          </dl>
        </descr>
      </topic>
      <topic name="PCharFunctions">
        <short>PChar related functions</short>
        <descr>
          <p>Most PChar functions are the same as their counterparts in the <file>STRINGS</file>
unit. The following functions are the same :
</p>
          <ol>
            <li>
              <link id="StrCat"/> : Concatenates two <var>PChar</var> strings.</li>
            <li>
              <link id="StrComp"/> : Compares two <var>PChar</var> strings.</li>
            <li>
              <link id="StrCopy"/> : Copies a <var>PChar</var> string.</li>
            <li>
              <link id="StrECopy"/> : Copies a <var>PChar</var> string and returns a pointer to
the terminating null byte.</li>
            <li>
              <link id="StrEnd"/> : Returns a pointer to the terminating null byte.</li>
            <li>
              <link id="StrIComp"/> : Case insensitive compare of 2 <var>PChar</var> strings.</li>
            <li>
              <link id="StrLCat"/> : Appends at most L characters from one <var>PChar</var> to
another <var>PChar</var>.
</li>
            <li>
              <link id="StrLComp"/> : Case sensitive compare of at most L characters of 2 <var>PChar</var> strings.
</li>
            <li>
              <link id="StrLCopy"/> : Copies at most L characters from one <var>PChar</var> to another.
</li>
            <li>
              <link id="StrLen"/> : Returns the length (exclusive terminating null byte)
of a <var>PChar</var> string.</li>
            <li>
              <link id="StrLIComp"/> : Case insensitive compare of at most L characters of 2
 <var>PChar</var> strings.
</li>
            <li>
              <link id="StrLower"/> : Converts a <var>PChar</var> to all lowercase letters.
</li>
            <li>
              <link id="StrMove"/> : Moves one <var>PChar</var> to another.
</li>
            <li>
              <link id="StrNew"/> : Makes a copy of a <var>PChar</var> on the heap, and returns
a pointer to this copy.
</li>
            <li>
              <link id="StrPos"/> : Returns the position of one <var>PChar</var> string in
another?
</li>
            <li>
              <link id="StrRScan"/> : returns a pointer to the last occurrence of on
 <var>PChar</var> string in another one.
</li>
            <li>
              <link id="StrScan"/> : returns a pointer to the first occurrence of on
 <var>PChar</var> string in another one.
</li>
            <li>
              <link id="StrUpper"/> : Converts a <var>PChar</var> to all uppercase
letters.</li>
          </ol>
          <p>The subsequent functions are different from their counterparts in
<file>STRINGS</file>, although the same examples can be used.
</p>
        </descr>
      </topic>
      <topic name="IORoutines">
        <short>File input/output routines</short>
        <descr>
          <p>Functions for reading/writing to file.
</p>
          <table>
            <th>
              <td>Name</td>
              <td>Description</td>
            </th>
            <tr>
              <td>
                <link id="FileCreate"/>
              </td>
              <td>Create a file and return handle</td>
            </tr>
            <tr>
              <td>
                <link id="FileOpen"/>
              </td>
              <td>Open file end return handle</td>
            </tr>
            <tr>
              <td>
                <link id="FileRead"/>
              </td>
              <td>Read from file</td>
            </tr>
            <tr>
              <td>
                <link id="FileSeek"/>
              </td>
              <td>Set file position</td>
            </tr>
            <tr>
              <td>
                <link id="FileTruncate"/>
              </td>
              <td>Truncate file length</td>
            </tr>
            <tr>
              <td>
                <link id="FileWrite"/>
              </td>
              <td>Write to file</td>
            </tr>
            <tr>
              <td>
                <link id="FileClose"/>
              </td>
              <td>Close file handle</td>
            </tr>
          </table>
        </descr>
      </topic>
      <topic name="FileNameRoutines">
        <short>FileName handling routines</short>
        <descr>
          <p>Functions for file manipulation.
</p>
          <table>
            <th>
              <td>Name</td>
              <td>Description</td>
            </th>
            <tr>
              <td>
                <link id="AddDisk"/>
              </td>
              <td>Add sisk to list of disk drives</td>
            </tr>
            <tr>
              <td>
                <link id="ChangeFileExt"/>
              </td>
              <td>Change extension of file name</td>
            </tr>
            <tr>
              <td>
                <link id="CreateDir"/>
              </td>
              <td>Create a directory</td>
            </tr>
            <tr>
              <td>
                <link id="DeleteFile"/>
              </td>
              <td>Delete a file</td>
            </tr>
            <tr>
              <td>
                <link id="DiskFree"/>
              </td>
              <td>Free space on disk</td>
            </tr>
            <tr>
              <td>
                <link id="DiskSize"/>
              </td>
              <td>Total size of disk</td>
            </tr>
            <tr>
              <td>
                <link id="ExpandFileName"/>
              </td>
              <td>Create full file name</td>
            </tr>
            <tr>
              <td>
                <link id="ExpandUNCFileName"/>
              </td>
              <td>Create full UNC file name</td>
            </tr>
            <tr>
              <td>
                <link id="ExtractFileDir"/>
              </td>
              <td>Extract drive and directory part of filename</td>
            </tr>
            <tr>
              <td>
                <link id="ExtractFileDrive"/>
              </td>
              <td>Extract drive part of filename</td>
            </tr>
            <tr>
              <td>
                <link id="ExtractFileExt"/>
              </td>
              <td>Extract extension part of filename</td>
            </tr>
            <tr>
              <td>
                <link id="ExtractFileName"/>
              </td>
              <td>Extract name part of filename</td>
            </tr>
            <tr>
              <td>
                <link id="ExtractFilePath"/>
              </td>
              <td>Extrct path part of filename</td>
            </tr>
            <tr>
              <td>
                <link id="ExtractRelativePath"/>
              </td>
              <td>Construct relative path between two files</td>
            </tr>
            <tr>
              <td>
                <link id="FileAge"/>
              </td>
              <td>Return file age</td>
            </tr>
            <tr>
              <td>
                <link id="FileDateToDateTime"/>
              </td>
              <td>Convert file date to system date</td>
            </tr>
            <tr>
              <td>
                <link id="FileExists"/>
              </td>
              <td>Determine whether a file exists on disk</td>
            </tr>
            <tr>
              <td>
                <link id="FileGetAttr"/>
              </td>
              <td>Get attributes of file</td>
            </tr>
            <tr>
              <td>
                <link id="FileGetDate"/>
              </td>
              <td>Get date of last file modification</td>
            </tr>
            <tr>
              <td>
                <link id="FileSearch"/>
              </td>
              <td>Search for file in path</td>
            </tr>
            <tr>
              <td>
                <link id="FileSetAttr"/>
              </td>
              <td>Get file attributes</td>
            </tr>
            <tr>
              <td>
                <link id="FileSetDate"/>
              </td>
              <td>Get file dates</td>
            </tr>
            <tr>
              <td>
                <link id="FindFirst"/>
              </td>
              <td>Start finding a file</td>
            </tr>
            <tr>
              <td>
                <link id="FindNext"/>
              </td>
              <td>Find next file</td>
            </tr>
            <tr>
              <td>
                <link id="GetCurrentDir"/>
              </td>
              <td>Return current working directory</td>
            </tr>
            <tr>
              <td>
                <link id="RemoveDir"/>
              </td>
              <td>Remove a directory from disk</td>
            </tr>
            <tr>
              <td>
                <link id="RenameFile"/>
              </td>
              <td>Rename a file on disk</td>
            </tr>
            <tr>
              <td>
                <link id="SetCurrentDir"/>
              </td>
              <td>Set current working directory</td>
            </tr>
            <tr>
              <td>
                <link id="SetDirSeparators"/>
              </td>
              <td>Set directory separator characters</td>
            </tr>
            <tr>
              <td>
                <link id="FindClose"/>
              </td>
              <td>Stop searching a file</td>
            </tr>
            <tr>
              <td>
                <link id="DoDirSeparators"/>
              </td>
              <td>Replace directory separator characters</td>
            </tr>
          </table>
        </descr>
      </topic>
      <topic name="DateTimeRoutines">
        <short>Date/time routines</short>
        <descr>
          <p>Functions for date and time handling.
</p>
          <table>
            <th>
              <td>Name</td>
              <td>Description</td>
            </th>
            <tr>
              <td>
                <link id="DateTimeToFileDate"/>
              </td>
              <td>Convert DateTime type to file date</td>
            </tr>
            <tr>
              <td>
                <link id="DateTimeToStr"/>
              </td>
              <td>Construct string representation of DateTime</td>
            </tr>
            <tr>
              <td>
                <link id="DateTimeToString"/>
              </td>
              <td>Construct string representation of DateTime</td>
            </tr>
            <tr>
              <td>
                <link id="DateTimeToSystemTime"/>
              </td>
              <td>Convert DateTime to system time</td>
            </tr>
            <tr>
              <td>
                <link id="DateTimeToTimeStamp"/>
              </td>
              <td>Convert DateTime to timestamp</td>
            </tr>
            <tr>
              <td>
                <link id="DateToStr"/>
              </td>
              <td>Construct string representation of date</td>
            </tr>
            <tr>
              <td>
                <link id="Date"/>
              </td>
              <td>Get current date</td>
            </tr>
            <tr>
              <td>
                <link id="DayOfWeek"/>
              </td>
              <td>Get day of week</td>
            </tr>
            <tr>
              <td>
                <link id="DecodeDate"/>
              </td>
              <td>Decode DateTime to year month and day</td>
            </tr>
            <tr>
              <td>
                <link id="DecodeTime"/>
              </td>
              <td>Decode DateTime to hours, minutes and seconds</td>
            </tr>
            <tr>
              <td>
                <link id="EncodeDate"/>
              </td>
              <td>Encode year, day and month to DateTime</td>
            </tr>
            <tr>
              <td>
                <link id="EncodeTime"/>
              </td>
              <td>Encode hours, minutes and seconds to DateTime</td>
            </tr>
            <tr>
              <td>
                <link id="FormatDateTime"/>
              </td>
              <td>Return string representation of DateTime</td>
            </tr>
            <tr>
              <td>
                <link id="IncMonth"/>
              </td>
              <td>Add 1 to month</td>
            </tr>
            <tr>
              <td>
                <link id="IsLeapYear"/>
              </td>
              <td>Determine if year is leap year</td>
            </tr>
            <tr>
              <td>
                <link id="MSecsToTimeStamp"/>
              </td>
              <td>Convert nr of milliseconds to timestamp</td>
            </tr>
            <tr>
              <td>
                <link id="Now"/>
              </td>
              <td>Get current date and time</td>
            </tr>
            <tr>
              <td>
                <link id="StrToDateTime"/>
              </td>
              <td>Convert string to DateTime</td>
            </tr>
            <tr>
              <td>
                <link id="StrToDate"/>
              </td>
              <td>Convert string to date</td>
            </tr>
            <tr>
              <td>
                <link id="StrToTime"/>
              </td>
              <td>Convert string to time</td>
            </tr>
            <tr>
              <td>
                <link id="SystemTimeToDateTime"/>
              </td>
              <td>Convert system time to datetime</td>
            </tr>
            <tr>
              <td>
                <link id="TimeStampToDateTime"/>
              </td>
              <td>Convert time stamp to DateTime</td>
            </tr>
            <tr>
              <td>
                <link id="TimeStampToMSecs"/>
              </td>
              <td>Convert Timestamp to number of millicseconds</td>
            </tr>
            <tr>
              <td>
                <link id="TimeToStr"/>
              </td>
              <td>return string representation of Time</td>
            </tr>
            <tr>
              <td>
                <link id="Time"/>
              </td>
              <td>Get current tyme</td>
            </tr>
          </table>
        </descr>
      </topic>
      <topic name="ConversionRoutines">
        <short>Miscellaneous conversion routines</short>
        <descr>
          <p>Functions for various conversions.
</p>
          <table>
            <th>
              <td>Name</td>
              <td>Description</td>
            </th>
            <tr>
              <td>
                <link id="BCDToInt"/>
              </td>
              <td>Convert BCD number to integer</td>
            </tr>
            <tr>
              <td>
                <link id="CompareMem"/>
              </td>
              <td>Compare two memory regions</td>
            </tr>
            <tr>
              <td>
                <link id="FloatToStrF"/>
              </td>
              <td>Convert float to formatted string</td>
            </tr>
            <tr>
              <td>
                <link id="FloatToStr"/>
              </td>
              <td>Convert float to string</td>
            </tr>
            <tr>
              <td>
                <link id="FloatToText"/>
              </td>
              <td>Convert float to string</td>
            </tr>
            <tr>
              <td>
                <link id="FormatFloat"/>
              </td>
              <td>Format a floating point value</td>
            </tr>
            <tr>
              <td>
                <link id="GetDirs"/>
              </td>
              <td>Split string in list of directories</td>
            </tr>
            <tr>
              <td>
                <link id="IntToHex"/>
              </td>
              <td>return hexadecimal representation of integer</td>
            </tr>
            <tr>
              <td>
                <link id="IntToStr"/>
              </td>
              <td>return decumal representation of integer</td>
            </tr>
            <tr>
              <td>
                <link id="StrToIntDef"/>
              </td>
              <td>Convert string to integer with default value</td>
            </tr>
            <tr>
              <td>
                <link id="StrToInt"/>
              </td>
              <td>Convert string to integer</td>
            </tr>
            <tr>
              <td>
                <link id="StrToFloat"/>
              </td>
              <td>Convert string to float</td>
            </tr>
            <tr>
              <td>
                <link id="TextToFloat"/>
              </td>
              <td>Convert null-terminated string to float</td>
            </tr>
          </table>
        </descr>
      </topic>
      <topic name="Localization">
        <short>Localization support</short>
        <descr>
          <p>Localization support depends on various constants and structures being
initialized correctly. On Windows and OS/2 this is done automatically: a
widestring manager is installed by default which helps taking care of the
current locale when performing various operations on strings. The various
internationalization settings (date/time format, currency, language etc) are
also initialized correctly on these platforms.
</p>
          <p>On unixes, the widestring support is in a separate unit:
<file>cwstring</file>, which loads the various needed 
functions from the C library. It should be added manually to the uses clause
of your program. No initialization settings are  applied by this unit, these
must be initialized separately for the moment.
</p>
        </descr>
      </topic>
      <element name="TDateTime">
        <short>Type describing date/time</short>
        <descr>
          <p>Many functions return or require a <var>TDateTime</var> type, which contains
a date and time in encoded form. The date and time are converted to a double
as follows:
</p>
          <ul>
            <li>The date part is stored in the integer part of the double as the
number of days passed since January 1, 1900.
</li>
            <li>The time part is stored in the fractional part of the double, as
the number of milliseconds passed since midnight (00:00), divided by the
total number of milliseconds in a day.
</li>
          </ul>
        </descr>
      </element>
      <element name="Date">
        <short>Return the current date.</short>
        <descr>
          <var>Date</var> returns the current date in <var>TDateTime</var> format.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="Time"/>
          <link id="Now"/>
        </seealso>
        <example file="sysutex/ex1"/>
      </element>
      <element name="DateTimeToFileDate">
        <short>Convert a <var>TDateTime</var> value to a file age (integer)</short>
        <descr>
          <var>DateTimeToFileDate</var> function converts a date/time indication in
<var>TDateTime</var> format to a filedate function, such as returned for
instance by the <link id="FileAge"/> function.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="Time"/>
          <link id="Date"/>
          <link id="FileDateToDateTime"/>,
<link id="DateTimeToSystemTime"/>
          <link id="DateTimeToTimeStamp"/>
        </seealso>
        <example file="sysutex/ex2"/>
      </element>
      <element name="DateTimeToStr">
        <short>Converts a <var>TDateTime</var> value to a string using a predefined format.</short>
        <descr>
          <var>DateTimeToStr</var> returns a string representation of
<var>DateTime</var> using the formatting specified in
<var>LongDateTimeFormat</var>. It corresponds to a call to
<var>FormatDateTime('c',DateTime)</var> (see <link id="formatchars"/>).
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="FormatDateTime"/>
        </seealso>
        <example file="sysutex/ex3"/>
      </element>
      <element name="DateTimeToString">
        <short>Converts a <var>TDateTime</var> value to a string with a given format.</short>
        <descr>
          <var>DateTimeToString</var> returns in <var>Result</var> a string representation of
<var>DateTime</var> using the formatting specified in <var>FormatStr</var>.

for a list of characters that can be used in the <var>FormatStr</var> formatting
string, see <link id="formatchars"/>.
</descr>
        <errors>In case a wrong formatting character is found, an <var>EConvertError</var> is
raised.
</errors>
        <seealso>
          <link id="FormatDateTime"/>
          <link id="formatchars"/>.
</seealso>
        <example file="sysutex/ex4"/>
      </element>
      <element name="DateTimeToSystemTime">
        <short>Converts a <var>TDateTime</var> value to a systemtime structure.</short>
        <descr>
          <var>DateTimeToSystemTime</var> converts a date/time pair in <var>DateTime</var>, with
<var>TDateTime</var> format to a system time <var>SystemTime</var>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="DateTimeToFileDate"/>
          <link id="SystemTimeToDateTime"/>,
<link id="DateTimeToTimeStamp"/>
        </seealso>
        <example file="sysutex/ex5"/>
      </element>
      <element name="DateTimeToTimeStamp">
        <short>Converts a <var>TDateTime</var> value to a TimeStamp structure.</short>
        <descr>
          <var>DateTimeToSystemTime</var> converts a date/time pair in <var>DateTime</var>, with
<var>TDateTime</var> format to a <var>TTimeStamp</var> format.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="DateTimeToFileDate"/>
          <link id="SystemTimeToDateTime"/>,
<link id="DateTimeToSystemTime"/>
        </seealso>
        <example file="sysutex/ex6"/>
      </element>
      <element name="DateToStr">
        <short>Converts a <var>TDateTime</var> value to a date string with a predefined format.</short>
        <descr>
          <var>DateToStr</var> converts <var>Date</var> to a string representation. It uses
<var>ShortDateFormat</var> as it's formatting string. It is hence completely
equivalent to a <var>FormatDateTime('ddddd', Date)</var>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="TimeToStr"/>
          <link id="DateTimeToStr"/>
          <link id="FormatDateTime"/>,
<link id="StrToDate"/>
        </seealso>
        <example file="sysutex/ex7"/>
      </element>
      <element name="DayOfWeek">
        <short>Returns the day of the week.</short>
        <descr>
          <var>DayOfWeek</var> returns the day of the week from <var>DateTime</var>.
<var>Sunday</var> is counted as day 1, <var>Saturday</var> is counted as
day 7. The result of <var>DayOfWeek</var> can serve as an index to
the <var>LongDayNames</var> constant array, to retrieve the name of
the day.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="Date"/>
          <link id="DateToStr"/>
        </seealso>
        <example file="sysutex/ex8"/>
      </element>
      <element name="DecodeDate">
        <short>Decode a <var>TDateTime</var> to a year,month,day triplet</short>
        <descr>
          <var>DecodeDate</var> decodes the Year, Month and Day stored in <var>Date</var>,
and returns them in the <var>Year</var>, <var>Month</var> and <var>Day</var> variables.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="EncodeDate"/>
          <link id="DecodeTime"/>.
</seealso>
        <example file="sysutex/ex9"/>
      </element>
      <element name="DecodeTime">
        <short>Decode a <var>TDateTime</var> to a hour,minute,second,millisec quartet</short>
        <descr>
          <var>DecodeDate</var> decodes the hours, minutes, second and milliseconds stored
in <var>Time</var>, and returns them in the <var>Hour</var>, <var>Minute</var> and
<var>Second</var> and <var>MilliSecond</var> variables.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="EncodeTime"/>
          <link id="DecodeDate"/>.
</seealso>
        <example file="sysutex/ex10"/>
      </element>
      <element name="EncodeDate">
        <short>Encode a Year,Month,Day to a <var>TDateTime</var> value.</short>
        <descr>
          <p>
            <var>EncodeDate</var> encodes the <var>Year</var>, <var>Month</var> and <var>Day</var> variables to
a date in <var>TDateTime</var> format. It does the opposite of the
<link id="DecodeDate"/> procedure.
</p>
          <p>The parameters must lie withing valid ranges (boundaries included):
</p>
          <dl>
            <dt>Year</dt>
            <dd>must be between 1 and 9999.</dd>
            <dt>Month</dt>
            <dd>must be within the range 1-12.</dd>
            <dt>Day</dt>
            <dd>msut be between 1 and 31.</dd>
          </dl>
        </descr>
        <errors>In case one of the parameters is out of it's valid range, an
<link id="EConvertError"/> exception is raised.
</errors>
        <seealso>
          <link id="EncodeTime"/>
          <link id="DecodeDate"/>
        </seealso>
        <example file="sysutex/ex11"/>
      </element>
      <element name="EncodeTime">
        <short>Encode a Hour,Min,Sec,millisec to a <var>TDateTime</var> value.</short>
        <descr>
          <p>
            <var>EncodeTime</var> encodes the <var>Hour</var>, <var>Minute</var>, <var>Second</var>,
<var>MilliSecond</var> variables to a <var>TDateTime</var> format result.
It does the opposite of the <link id="DecodeTime"/> procedure.
</p>
          <p>The parameters must have a valid range (boundaries included):
</p>
          <dl>
            <dt>Hour</dt>
            <dd>must be between 0 and 23.</dd>
            <dt>Minute,second</dt>
            <dd>must both be between 0 and 59.</dd>
            <dt>Millisecond</dt>
            <dd>must be between 0 and 999.</dd>
          </dl>
        </descr>
        <errors>In case one of the parameters is out of it's valid range, an
<link id="EConvertError"/> exception is raised.
</errors>
        <seealso>
          <link id="EncodeDate"/>
          <link id="DecodeTime"/>
        </seealso>
        <example file="sysutex/ex12"/>
      </element>
      <element name="FileDateToDateTime">
        <short>Convert a <var>FileDate</var> value to a <var>TDateTime</var>
value.</short>
        <descr>
          <var>FileDateToDateTime</var> converts the date/time encoded in <var>filedate</var>
to a <var>TDateTime</var> encoded form. It can be used to convert date/time values
returned by the <link id="FileAge"/> or <link id="FindFirst"/>/<link id="FindNext"/>
functions to <var>TDateTime</var> form.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="DateTimeToFileDate"/>
        </seealso>
        <example file="sysutex/ex13"/>
      </element>
      <element name="FormatDateTime">
        <short>Return a string representation of a <var>TDateTime</var> value with a given
format.</short>
        <descr>
          <var>FormatDateTime</var> formats the date and time encoded in <var>DateTime</var>
according to the formatting given in <var>FormatStr</var>. The complete list
of formatting characters can be found in <link id="formatchars"/>.
</descr>
        <errors>On error (such as an invalid character in the formatting string), and
<var>EConvertError</var> exception is raised.
</errors>
        <seealso>
          <link id="DateTimeToStr"/>
          <link id="DateToStr"/>
          <link id="TimeToStr"/>
          <link id="StrToDateTime"/>
        </seealso>
        <example file="sysutex/ex14"/>
      </element>
      <element name="IncMonth">
        <short>Increases the month in a <var>TDateTime</var> value with a given amount.</short>
        <descr>
          <var>IncMonth</var> increases the month number in <var>DateTime</var> with
<var>NumberOfMonths</var>. It wraps the result as to get a month between 1 and
12, and updates the year accordingly. <var>NumberOfMonths</var> can be negative,
and can be larger than 12 (in absolute value).
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="Date"/>
          <link id="Time"/>
          <link id="Now"/>
        </seealso>
        <example file="sysutex/ex15"/>
      </element>
      <element name="IsLeapYear">
        <short>Determine whether a year is a leap year.</short>
        <descr>
          <var>IsLeapYear</var> returns <var>True</var> if <var>Year</var> is a leap year,
<var>False</var> otherwise.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="IncMonth"/>
          <link id="Date"/>
        </seealso>
        <example file="sysutex/ex16"/>
      </element>
      <element name="MSecsToTimeStamp">
        <short>Convert a number of milliseconds to a <var>TDateTime</var> value.</short>
        <descr>
          <p>
            <var>MSecsTiTimeStamp</var> converts the given number of milliseconds to
a <var>TTimeStamp</var> date/time notation.
</p>
          <p>Use <var>TTimeStamp</var> variables if you need to keep very precise track of
time.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="TimeStampToMSecs"/>
          <link id="DateTimeToTimeStamp"/>
        </seealso>
        <example file="sysutex/ex17"/>
      </element>
      <element name="Now">
        <short>Returns the current date and time.</short>
        <descr>
          <var>Now</var> returns the current date and time. It is equivalent to
<var>Date+Time</var>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="Date"/>
          <link id="Time"/>
        </seealso>
        <example file="sysutex/ex18"/>
      </element>
      <element name="StrToDate">
        <short>Convert a date string to a <var>TDateTime</var> value.</short>
        <descr>
          <p>
            <var>StrToDate</var> converts the string <var>S</var> to a <var>TDateTime</var> date
value. The Date must consist of 1 to three digits, separated by the
<var>DateSeparator</var> character. If two numbers are given, they
are supposed to form the day and month of the current year. If only
one number is given, it is supposed to represent the day of the
current month. (This is <em>not</em> supported in Delphi)
</p>
          <p>The order of the digits (y/m/d, m/d/y, d/m/y) is determined from the
<var>ShortDateFormat</var> variable.
</p>
        </descr>
        <errors>On error (e.g. an invalid date or invalid character),
an <var>EConvertError</var> exception is raised.
</errors>
        <seealso>
          <link id="StrToTime"/>
          <link id="DateToStr"/>
          <link id="TimeToStr"/>
        </seealso>
        <example file="sysutex/ex19"/>
      </element>
      <element name="StrToDateTime">
        <short>Convert a date/time string to a <var>TDateTime</var> value.</short>
        <descr>
          <p>
            <var>StrToDateTime</var> converts the string <var>S</var> to a <var>TDateTime</var> date
and time value. The date and time parts must be separated by a space. 
</p>
          <p>For the date part, the same restrictions apply as for the <link id="StrToDate"/>
function: The Date must consist of 1 to three numbers, separated by the
<var>DateSeparator</var> character. If two numbers are given, they
are supposed to form the day and month of the current year. If only
one number is given, it is supposed to represent the day of the
current month. (This is <em>not</em> supported in Delphi)
</p>
          <p>The order of the 3 numbers (y/m/d, m/d/y, d/m/y) is determined from the
<var>ShortDateFormat</var> variable. 
</p>
        </descr>
        <errors>On error (e.g. an invalid date or invalid character),
an <var>EConvertError</var> exception is raised.
</errors>
        <seealso>
          <link id="StrToDate"/>
          <link id="StrToTime"/>
          <link id="DateTimeToStr"/>
        </seealso>
        <example file="sysutex/ex20"/>
      </element>
      <element name="StrToTime">
        <short>Convert a time string to a <var>TDateTime</var> value.</short>
        <descr>
          <var>StrToTime</var> converts the string <var>S</var> to a <var>TDateTime</var> time
value. The time must consist of 1 to 4 digits, separated by the
<var>TimeSeparator</var> character. If two numbers are given, they
are supposed to form the hour and minutes.
</descr>
        <errors>On error (e.g. an invalid date or invalid character),
an <var>EConvertError</var> exception is raised.
</errors>
        <seealso>
          <link id="StrToDate"/>
          <link id="StrToDateTime"/>
          <link id="TimeToStr"/>
        </seealso>
        <example file="sysutex/ex21"/>
      </element>
      <element name="SystemTimeToDateTime">
        <short>Convert a system time to a <var>TDateTime</var> value.</short>
        <descr>
          <var>SystemTimeToDateTime</var> converts a <var>TSystemTime</var> record to a
<var>TDateTime</var> style date/time indication.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="DateTimeToSystemTime"/>
        </seealso>
        <example file="sysutex/ex22"/>
      </element>
      <element name="Time">
        <short>Returns the current time.</short>
        <descr>
          <var>Time</var> returns the current time in <var>TDateTime</var> format. The date
part of the <var>TDateTimeValue</var> is set to zero.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="Now"/>
          <link id="Date"/>
        </seealso>
        <example file="sysutex/ex23"/>
      </element>
      <element name="TimeStampToDateTime">
        <short>Convert a TimeStamp value to a <var>TDateTime</var> value.</short>
        <descr>
          <var>TimeStampToDateTime</var> converts <var>TimeStamp</var> to a <var>TDateTime</var>
format variable. It is the inverse operation of <link id="DateTimeToTimeStamp"/>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="DateTimeToTimeStamp"/>
          <link id="TimeStampToMSecs"/>
        </seealso>
        <example file="sysutex/ex24"/>
      </element>
      <element name="TimeStampToMSecs">
        <short>Converts a timestamp to a number of milliseconds.</short>
        <descr>
          <p>
            <var>TimeStampToMSecs</var> converts <var>TimeStamp</var> to the number of seconds
since <var>1/1/0001</var>.
</p>
          <p>Use <var>TTimeStamp</var> variables if you need to keep very precise track of
time.
</p>
          <p>For an example, see <link id="MSecsToTimeStamp"/>.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="MSecsToTimeStamp"/>
          <link id="TimeStampToDateTime"/>
        </seealso>
      </element>
      <element name="TimeToStr">
        <short>Convert a <var>TDateTime</var> time to a string using a predefined format.</short>
        <descr>
          <var>TimeToStr</var> converts the time in <var>Time</var> to a string. It uses
the <var>ShortTimeFormat</var> variable to see what formatting needs to be
applied. It is therefor entirely equivalent to a
<var>FormatDateTime('t',Time)</var> call.
</descr>
        <errors>None.
</errors>
        <seealso/>
        <example file="sysutex/ex25"/>
      </element>
      <element name="AddDisk">
        <short>Add a disk to the list of known disks (Unix only)</short>
        <descr>
          <p>On Unix-like platforms  both the <link id="DiskFree"/> and <link id="DiskSize"/> functions need a
file on the specified drive, since is required for the statfs system call.
</p>
          <p>These filenames are set in drivestr[0..26], and the first 4 have been
preset to :
</p>
          <dl>
            <dt>Disk 0</dt>
            <dd>
              <var>'.'</var> default drive - hence current directory is used.</dd>
            <dt>Disk 1</dt>
            <dd>
              <var>'/fd0/.'</var> floppy drive 1.</dd>
            <dt>Disk 2</dt>
            <dd>
              <var>'/fd1/.'</var> floppy drive 2.</dd>
            <dt>Disk 3</dt>
            <dd>
              <var>'/'</var>
              <file>C:</file> equivalent of DOS is the root partition.</dd>
          </dl>
          <p>Drives 4..26 can be set by your own applications with the <var>AddDisk</var> call.
</p>
          <p>The <var>AddDisk</var> call adds <var>Path</var> to the names of drive files, and
returns the number of the disk that corresponds to this drive. If you
add more than 21 drives, the count is wrapped to 4.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="DiskFree"/>
          <link id="DiskSize"/>
        </seealso>
      </element>
      <element name="CreateDir">
        <short>Create a new directory</short>
        <descr>
          <p>
            <var>CreateDir</var> creates a new directory with name <var>NewDir</var>.
If the directory doesn't contain an absolute path, then the directory is
created below the current working directory.
</p>
          <p>The function returns <var>True</var> if the directory was successfully
created, <var>False</var> otherwise.
</p>
        </descr>
        <errors>In case of an error, the function returns <var>False</var>.
</errors>
        <seealso>
          <link id="RemoveDir"/>
        </seealso>
        <example file="sysutex/ex26"/>
      </element>
      <element name="DiskFree">
        <short>Return the amount of free diskspace</short>
        <descr>
          <p>
            <var>DiskFree</var> returns the free space (in bytes) on disk <var>Drive</var>.
Drive is the number of the disk drive:
</p>
          <dl>
            <dt>0</dt>
            <dd>for the current drive.</dd>
            <dt>1</dt>
            <dd>for the first floppy drive.</dd>
            <dt>2</dt>
            <dd>for the second floppy drive.</dd>
            <dt>3</dt>
            <dd>for the first hard-disk partition.</dd>
            <dt>4-26</dt>
            <dd>for all other drives and partitions.</dd>
          </dl>
          <remark>Under Linux, and Unix in general, the concept of disk is
different than the dos one, since the filesystem is seen as one big
directory tree. For this reason, the <var>DiskFree</var> and <link id="DiskSize"/>
functions must be mimicked using filenames that reside on the partitions.
For more information, see <link id="AddDisk"/>.
</remark>
        </descr>
        <errors>On error, <var>-1</var> is returned.
</errors>
        <seealso>
          <link id="DiskSize">DiskSize</link>
          <link id="AddDisk"/>
        </seealso>
        <example file="sysutex/ex27"/>
      </element>
      <element name="DiskSize">
        <short>Return the total amount of diskspace.</short>
        <descr>
          <p>
            <var>DiskSize</var> returns the size (in bytes) of disk <var>Drive</var>.
Drive is the number of the disk drive:
</p>
          <dl>
            <dt>0</dt>
            <dd>for the current drive.</dd>
            <dt>1</dt>
            <dd>for the first floppy drive.</dd>
            <dt>2</dt>
            <dd>for the second floppy drive.</dd>
            <dt>3</dt>
            <dd>for the first hard-disk parttion.</dd>
            <dt>4-26</dt>
            <dd>for all other drives and partitions.</dd>
          </dl>
          <remark>Under Linux, and Unix in general, the concept of disk is
different than the dos one, since the filesystem is seen as one big
directory tree. For this reason, the <link id="DiskFree"/> and <var>DiskSize</var>
functions must be mimicked using filenames that reside on the partitions.
For more information, see <link id="AddDisk"/>
          </remark>
          <p>For an example, see <link id="DiskFree">DiskFree</link>.
</p>
        </descr>
        <errors>On error, <var>-1</var> is returned.
</errors>
        <seealso>
          <link id="DiskFree"/>
          <link id="AddDisk"/>
        </seealso>
      </element>
      <element name="GetCurrentDir">
        <short>Return the current working directory of the application.</short>
        <descr>
          <var>GetCurrentDir</var> returns the current working directory.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="SetCurrentDir"/>
          <link id="DiskFree"/>
          <link id="DiskSize"/>
        </seealso>
        <example file="sysutex/ex28"/>
      </element>
      <element name="RemoveDir">
        <short>Remove a directory from the filesystem.</short>
        <descr>
          <p>
            <var>RemoveDir</var> removes directory <var>Dir</var> from the disk.
If the directory is not absolue, it is appended to the current working
directory.
</p>
          <p>For an example, see <link id="CreateDir"/>.
</p>
        </descr>
        <errors>In case of error (e.g. the directory isn't empty) the function returns
<var>False</var>. If successful, <var>True</var> is returned.
</errors>
        <seealso/>
      </element>
      <element name="SetCurrentDir">
        <short>Set the current directory of the application.</short>
        <descr>
          <var>SetCurrentDir</var> sets the current working directory of your program
to <var>NewDir</var>. It returns <var>True</var> if the function was successfull,
<var>False</var> otherwise.
</descr>
        <errors>In case of error, <var>False</var> is returned.
</errors>
        <seealso>
          <link id="GetCurrentDir"/>
        </seealso>
      </element>
      <example file="sysutex/ex29"/>
      <element name="ChangeFileExt">
        <short>Change the extension of a filename.</short>
        <descr>
          <p>
            <var>ChangeFileExt</var> changes the file extension in <var>FileName</var> to
<var>Extension</var>.
The extension <var>Extension</var> includes the starting <var>.</var> (dot).
The previous extension of <var>FileName</var> are all characters after the
last <var>.</var>, the <var>.</var> character included.
</p>
          <p>If <var>FileName</var> doesn't have an extension, <var>Extension</var> is just
appended.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="ExtractFileName"/>
          <link id="ExtractFilePath"/>
          <link id="ExpandFileName"/>
        </seealso>
      </element>
      <element name="DeleteFile">
        <short>Delete a file from the filesystem.</short>
        <descr>
          <var>DeleteFile</var> deletes file <var>FileName</var> from disk. The function
returns <var>True</var> if the file was successfully removed, <var>False</var>
otherwise.
</descr>
        <errors>On error, <var>False</var> is returned.
</errors>
        <seealso>
          <link id="FileCreate"/>
          <link id="FileExists"/>
        </seealso>
        <example file="sysutex/ex31"/>
      </element>
      <element name="DoDirSeparators">
        <short>Convert known directory separators to the current directory separator.</short>
        <descr>This function replaces all known directory separators in <var>FileName</var>
to the directory separator character for the current system. The list of
known separators is specified in the <link id="DirSeparators"/> constant.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="ExtractFileName"/>
          <link id="ExtractFilePath"/>
        </seealso>
        <example file="sysutex/ex32"/>
      </element>
      <element name="ExpandFileName">
        <short>Expand a relative filename to an absolute filename.</short>
        <descr>
          <var>ExpandFileName</var> expands the filename to an absolute filename.
It changes all directory separator characters to the one appropriate for the
system first.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="ExtractFileName"/>
          <link id="ExtractFilePath"/>
          <link id="ExtractFileDir"/>,
<link id="ExtractFileDrive"/>
          <link id="ExtractFileExt"/>
          <link id="ExtractRelativePath"/>
        </seealso>
        <example file="sysutex/ex33"/>
      </element>
      <element name="ExpandUNCFileName">
        <short>Expand a relative filename to an absolute UNC filename.</short>
        <descr>
          <var>ExpandUNCFileName</var> runs <link id="ExpandFileName"/> on <var>FileName</var>
and then attempts to replace the driveletter by the name of a shared disk.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="ExtractFileName"/>
          <link id="ExtractFilePath"/>
          <link id="ExtractFileDir"/>,
<link id="ExtractFileDrive"/>
          <link id="ExtractFileExt"/>
          <link id="ExtractRelativePath"/>
        </seealso>
      </element>
      <element name="ExtractFileDir">
        <short>Extract the drive and directory part of a filename.</short>
        <descr>
          <var>ExtractFileDir</var> returns only the directory part of <var>FileName</var>,
including a driveletter. The directory name has NO ending directory
separator, in difference with <link id="ExtractFilePath"/>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="ExtractFileName"/>
          <link id="ExtractFilePath"/>
          <link id="ExtractFileDir"/>,
<link id="ExtractFileDrive"/>
          <link id="ExtractFileExt"/>
          <link id="ExtractRelativePath"/>
        </seealso>
        <example file="sysutex/ex34"/>
      </element>
      <element name="ExtractFileDrive">
        <short>Extract the drive part from a filename.</short>
        <descr>
          <p>
            <var>Extracts</var> the drive letter from a filename. Note that some
operating systems do not support drive letters.
</p>
          <p>For an example, see <link id="ExtractFileDir"/>.
</p>
        </descr>
        <errors/>
        <seealso>
          <link id="ExtractFileName"/>
          <link id="ExtractFilePath"/>
          <link id="ExtractFileDir"/>,
<link id="ExtractFileDrive"/>
          <link id="ExtractFileExt"/>
          <link id="ExtractRelativePath"/>
        </seealso>
      </element>
      <element name="ExtractFileExt">
        <short>Return the extension from a filename.</short>
        <descr>
          <p>
            <var>ExtractFileExt</var> returns the extension (including the
<var>.</var>(dot) character) of <var>FileName</var>.
</p>
          <p>For an example, see <link id="ExtractFileDir"/>.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="ExtractFileName"/>
          <link id="ExtractFilePath"/>
          <link id="ExtractFileDir"/>,
<link id="ExtractFileDrive"/>
          <link id="ExtractFileExt"/>
          <link id="ExtractRelativePath"/>
        </seealso>
      </element>
      <element name="ExtractFileName">
        <short>Extract the filename part from a full path filename.</short>
        <descr>
          <p>
            <var>ExtractFileName</var> returns the filename part from <var>FileName</var>.
The filename consists of all characters after the last directory separator
character ('/' or '\') or drive letter.
</p>
          <p>The full filename can always be reconstucted by concatenating the result
of <link id="ExtractFilePath"/> and <var>ExtractFileName</var>.
</p>
          <p>For an example, see <link id="ExtractFileDir"/>.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="ExtractFileName"/>
          <link id="ExtractFilePath"/>
          <link id="ExtractFileDir"/>,
<link id="ExtractFileDrive"/>
          <link id="ExtractFileExt"/>
          <link id="ExtractRelativePath"/>
        </seealso>
      </element>
      <element name="ExtractFilePath">
        <short>Extract the path from a filename.</short>
        <descr>
          <p>
            <var>ExtractFilePath</var> returns the path part (including driveletter) from
<var>FileName</var>. The path consists of all characters before the last
directory separator character ('/' or '\'), including the directory
separator itself.
In case there is only a drive letter, that will be returned.
</p>
          <p>The full filename can always be reconstucted by concatenating the result
of <var>ExtractFilePath</var> and <link id="ExtractFileName"/>.
</p>
          <p>For an example, see <link id="ExtractFileDir"/>.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="ExtractFileName"/>
          <link id="ExtractFilePath"/>
          <link id="ExtractFileDir"/>,
<link id="ExtractFileDrive"/>
          <link id="ExtractFileExt"/>
          <link id="ExtractRelativePath"/>
        </seealso>
      </element>
      <element name="ExtractRelativePath">
        <short>Extract a relative path from a filename, given a base directory.</short>
        <descr>
          <var>ExtractRelativePath</var> constructs a relative path to go from
<var>BaseName</var> to <var>DestName</var>. If <var>DestName</var> is on another drive
(Not on Unix-like platforms) then the whole <var>Destname</var> is returned.

<em>Note:</em> This function does not exist in the Delphi unit.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="ExtractFileName"/>
          <link id="ExtractFilePath"/>
          <link id="ExtractFileDir"/>,
<link id="ExtractFileDrive"/>
          <link id="ExtractFileExt"/>,
</seealso>
        <example file="sysutex/ex35"/>
      </element>
      <element name="FileAge">
        <short>Return the timestamp of a file.</short>
        <descr>
          <var>FileAge</var> returns the last modification time of file <var>FileName</var>.
The FileDate format can be transformed to <var>TDateTime</var> format with the
<link id="FileDateToDateTime"/> function.
</descr>
        <errors>In case of errors, <var>-1</var> is returned.
</errors>
        <seealso>
          <link id="FileDateToDateTime"/>
          <link id="FileExists"/>
          <link id="FileGetAttr"/>
        </seealso>
        <example file="sysutex/ex36"/>
      </element>
      <element name="FileClose">
        <short>Close a file handle.</short>
        <descr>
          <p>
            <var>FileClose</var> closes the file handle <var>Handle</var>. After this call,
attempting to read or write from the handle will result in an error.
</p>
          <p>For an example, see <link id="FileCreate"/>
          </p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="FileCreate"/>
          <link id="FileWrite"/>
          <link id="FileOpen"/>
          <link id="FileRead"/>,
<link id="FileTruncate"/>
          <link id="FileSeek"/>
        </seealso>
      </element>
      <element name="FileCreate">
        <short>Create a new file and return a handle to it.</short>
        <descr>
          <p>
            <var>FileCreate</var> creates a new file with name <var>FileName</var> on the disk and
returns a file handle which can be used to read or write from the file with
the <link id="FileRead"/> and <link id="FileWrite"/> functions.
</p>
          <p>If a file with name <var>FileName</var> already existed on the disk, it is
overwritten.
</p>
          <p>The optional <var>Mode</var> parameter only has an effect under unix,
where it can be used to set the mode (read, write, execute, sticky bit,
setgid and setuid flags) of the created file to the specified custom value.
On other platfors, the <var>Mode</var> parameter is ignored.
</p>
        </descr>
        <errors>If an error occurs (e.g. disk full or non-existent path), the function
returns <var>-1</var>.
</errors>
        <seealso>
          <link id="FileClose"/>
          <link id="FileWrite"/>
          <link id="FileOpen"/>
          <link id="FileRead"/>,
<link id="FileTruncate"/>
          <link id="FileSeek"/>
        </seealso>
        <example file="sysutex/ex37"/>
      </element>
      <element name="FileExists">
        <short>Check whether a file exists in the filesystem.</short>
        <descr>
          <var>FileExists</var> returns <var>True</var> if a file with name <var>FileName</var>
exists on the disk, <var>False</var> otherwise.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="FileAge"/>
          <link id="FileGetAttr"/>
          <link id="FileSetAttr"/>
        </seealso>
        <example file="sysutex/ex38"/>
      </element>
      <element name="FileGetAttr">
        <short>Return attributes of a file.</short>
        <descr>
          <p>
            <var>FileGetAttr</var> returns the attribute settings of file
<var>FileName</var>. The attribute is a <var>OR</var>-ed combination
of the following constants:
</p>
          <dl>
            <dt>faReadOnly</dt>
            <dd>The file is read-only.</dd>
            <dt>faHidden</dt>
            <dd>The file is hidden. (On unix, this means that the filename starts with a dot)
</dd>
            <dt>faSysFile</dt>
            <dd>The file is a system file (On unix, this means that the file is a character, block or FIFO file).
</dd>
            <dt>faVolumeId</dt>
            <dd>Volume Label. Not possible under unix.</dd>
            <dt>faDirectory</dt>
            <dd>File is a directory.</dd>
            <dt>faArchive</dt>
            <dd>file is an archive. Not possible on Unix</dd>
          </dl>
        </descr>
        <errors>In case of error, -1 is returned.
</errors>
        <seealso>
          <link id="FileSetAttr"/>
          <link id="FileAge"/>
          <link id="FileGetDate"/>.
</seealso>
        <example file="sysutex/ex40"/>
      </element>
      <element name="FileGetDate">
        <short>Return the file time of an opened file.</short>
        <descr>
          <var>FileGetdate</var> returns the filetime of the opened file with filehandle
<var>Handle</var>. It is the same as <link id="FileAge"/>, with this difference that
<var>FileAge</var> only needs the file name, while <var>FilegetDate</var> needs an
open file handle.
</descr>
        <errors>On error, -1 is returned.
</errors>
        <seealso>
          <link id="FileAge"/>
        </seealso>
        <example file="sysutex/ex39"/>
      </element>
      <element name="FileOpen">
        <short>Open an existing file and return a filehandle</short>
        <descr>
          <p>
            <var>FileOpen</var> opens a file with name <var>FileName</var> with mode <var>Mode</var>.
<var>Mode</var> can be one of the following constants:
</p>
          <dl>
            <dt>fmOpenRead</dt>
            <dd>
              <printshort id="fmOpenRead"/>
            </dd>
            <dt>fmOpenWrite</dt>
            <dd>
              <printshort id="fmOpenWrite"/>
            </dd>
            <dt>fmOpenReadWrite</dt>
            <dd>
              <printshort id="fmOpenReadWrite"/>
            </dd>
          </dl>
          <p>Under Windows and Unix, the above mode can be or-ed with one of the following sharing/locking flags:
</p>
          <dl>
            <dt>fmShareCompat</dt>
            <dd>
              <printshort id="fmShareCompat"/>
            </dd>
            <dt>fmShareExclusive</dt>
            <dd>
              <printshort id="fmShareExclusive"/>
            </dd>
            <dt>fmShareDenyWrite</dt>
            <dd>
              <printshort id="fmShareDenyWrite"/>
            </dd>
            <dt>fmShareDenyRead</dt>
            <dd>
              <printshort id="fmShareDenyRead"/>
            </dd>
            <dt>fmShareDenyNone</dt>
            <dd>
              <printshort id="fmShareDenyNone"/>
            </dd>
          </dl>
          <p>If the file has been successfully opened, it can be read  from or written to
(depending on the <var>Mode</var> parameter) with the <link id="FileRead"/> and
<var>FileWrite</var> functions.
</p>
          <remark>Remark that you cannot open a file if it doesn't exist yet, i.e. it will not
be created for you. If you want tp create a new file, or overwrite an old
one, use the <link id="FileCreate"/> function.
</remark>
          <p>There are some limitations to the sharing modes.
</p>
          <ol>
            <li>Sharing modes are only available on Unix and Windows platforms.</li>
            <li>Unix only support sharing modes as of 2.4.0.</li>
            <li>fmShareDenyRead only works under Windows at this time, and will always
 result in an error on Unix platforms because its file locking APIs do not
 support this concept.</li>
            <li>File locking is advisory on Unix platforms. This means that the locks
 are only checked when a file is opened using a file locking mode. In other
 cases, existing locks are simply ignored. In particular, this means that
 <var>fmShareDenyNone</var> has no effect under Unix, because this can only
 be implemented as ``use no locking'' on those platforms. As a result, opening
 a file using this mode will always succeed under Unix as far as the locking
 is concerned, even if the file has already been opened using
 <var>fmShareExclusive</var>.</li>
            <li>Under Solaris, closing a single file handle associated with a file will
result in all locks on that file (even via other handles) being destroyed 
due to the behaviour of the underlying API (fcntl). Because of the same reason, on Solaris you cannot use
<var>fmShareDenyWrite</var> in combination with <var>fmOpenWrite</var>, nor <var>fmShareExclusive</var> 
in combination with <var>fmOpenRead</var> although both work with fmOpenReadWrite.</li>
          </ol>
          <p>For an example, see <link id="FileCreate"/>
          </p>
        </descr>
        <errors>On Error, -1 is returned.
</errors>
        <seealso>
          <link id="fmOpenRead"/>
          <link id="fmOpenWrite"/>
          <link id="fmOpenReadWrite"/>
          <link id="fmShareDenyWrite"/>
          <link id="fmShareExclusive"/>
          <link id="fmShareDenyRead"/>
          <link id="fmShareDenyNone"/>
          <link id="fmShareCompat"/>
          <link id="FileClose"/>
          <link id="FileWrite"/>
          <link id="FileCreate"/>
          <link id="FileRead"/>,
<link id="FileTruncate"/>
          <link id="FileSeek"/>
        </seealso>
      </element>
      <element name="FileRead">
        <short>Read data from a filehandle in a buffer.</short>
        <descr>
          <p>
            <var>FileRead</var> reads <var>Count</var> bytes from file-handle <var>Handle</var> and
stores them into <var>Buffer</var>. Buffer must be at least <var>Count</var> bytes
long. No checking on this is performed, so be careful not to overwrite any
memory.  <var>Handle</var> must be the result of a <link id="FileOpen"/> call.
</p>
          <p>The function returns the number of bytes actually read, or -1 on error.
</p>
          <p>For an example, see <link id="FileCreate"/>
          </p>
        </descr>
        <errors>On error, -1 is returned.
</errors>
        <seealso>
          <link id="FileClose"/>
          <link id="FileWrite"/>
          <link id="FileCreate"/>
          <link id="FileOpen"/>,
<link id="FileTruncate"/>
          <link id="FileSeek"/>
        </seealso>
      </element>
      <element name="FileSearch">
        <short>Search for a file in a path.</short>
        <descr>
          <var>FileSearch</var> looks for the file <var>Name</var> in <var>DirList</var>, where
dirlist is a list of directories, separated by semicolons or colons.
It returns the full filename of the first match found.
</descr>
        <errors>On error, an empty string is returned.
</errors>
        <seealso>
          <link id="ExpandFileName"/>
          <link id="FindFirst"/>
        </seealso>
        <example file="sysutex/ex41"/>
      </element>
      <element name="FileSeek">
        <short>Set the current file position on a file handle.</short>
        <descr>
          <p>
            <var>FileSeek</var> sets the file pointer on position <var>Offset</var>, starting from
<var>Origin</var>. Origin can be one of the following values:
</p>
          <dl>
            <dt>fsFromBeginning</dt>
            <dd>
              <var>Offset</var> is relative to the first byte of the file. This
position is zero-based. i.e. the first byte is at offset 0.
</dd>
            <dt>fsFromCurrent</dt>
            <dd>
              <var>Offset</var> is relative to the current position.</dd>
            <dt>fsFromEnd</dt>
            <dd>
              <var>Offset</var> is relative to the end of the file. 
This means that <var>Offset</var> can only be zero or negative in this case.
</dd>
          </dl>
          <p>If successfull, the function returns the new file position, relative to the
beginning of the file.
</p>
          <remark>The abovementioned constants do not exist in Delphi.
</remark>
        </descr>
        <errors>On error, -1 is returned.
</errors>
        <seealso>
          <link id="FileClose"/>
          <link id="FileWrite"/>
          <link id="FileCreate"/>
          <link id="FileOpen"/>
          <link id="FileRead"/>
          <link id="FileTruncate"/>
        </seealso>
        <example file="sysutex/ex42"/>
      </element>
      <element name="FileSetAttr">
        <short>Set the attributes of a file.</short>
        <descr>
          <p>
            <var>FileSetAttr</var> sets the attributes of <var>FileName</var> to <var>Attr</var>.
If the function was successful, 0 is returned, -1 otherwise.
<var>Attr</var> can be set to an OR-ed combination of the pre-defined
<var>faXXX</var> constants.
</p>
          <p>This function is not implemented on Unixes.
</p>
        </descr>
        <errors>On error, -1 is returned (always on Unixes).
</errors>
        <seealso>
          <link id="FileGetAttr"/>
          <link id="FileGetDate"/>
          <link id="FileSetDate"/>.
</seealso>
      </element>
      <element name="FileSetDate">
        <short>Set the date of a file.</short>
        <descr>
          <p>
            <var>FileSetDate</var> sets the file date of the open file with handle <var>Handle</var>
or to <var>Age</var>, where <var>Age</var> is a DOS date-and-time stamp value.
</p>
          <p>Alternatively, the filename may be specified with the <var>FileName</var> argument.
This variant of the call is mandatory on unices, since there is no OS support for 
setting a file timestamp based on a handle. (the handle may not be a real file at all).
</p>
          <p>The function returns zero if successfull. 
</p>
        </descr>
        <errors>On Unix, the handle variant always returns -1, since this is impossible to implement.
On Windows and DOS, a negative error code is returned.
</errors>
        <seealso/>
      </element>
      <element name="FileTruncate">
        <short>Truncate an open file to a given size.</short>
        <descr>
          <p>
            <var>FileTruncate</var> truncates the file with handle <var>Handle</var> to
<var>Size</var> bytes. The file must have been opened for writing prior
to this call. The function returns <var>True</var> is successful, <var>False</var>
otherwise.
</p>
          <p>For an example, see <link id="FileCreate"/>.
</p>
        </descr>
        <errors>On error, the function returns <var>False</var>.
</errors>
        <seealso>
          <link id="FileClose"/>
          <link id="FileWrite"/>
          <link id="FileCreate"/>
          <link id="FileOpen"/>
          <link id="FileRead"/>
          <link id="FileSeek"/>
        </seealso>
      </element>
      <element name="FileWrite">
        <short>Write data from a buffer to a given filehandle.</short>
        <descr>
          <p>
            <var>FileWrite</var> writes <var>Count</var> bytes from <var>Buffer</var> to the file with
handle <var>Handle</var>. Prior to this call, the file must have been opened
for writing. <var>Buffer</var> must be at least <var>Count</var> bytes large, or
a memory access error may occur.
</p>
          <p>The function returns the number of bytes written, or -1 in case of an
error.
</p>
          <p>For an example, see <link id="FileCreate"/>.
</p>
        </descr>
        <errors>In case of error, -1 is returned.
</errors>
        <seealso>
          <link id="FileClose"/>
          <link id="FileCreate"/>
          <link id="FileOpen"/>
          <link id="FileRead"/>
          <link id="FileTruncate"/>
          <link id="FileSeek"/>
        </seealso>
      </element>
      <element name="FindClose">
        <short>Close a find handle</short>
        <descr>
          <p>
            <var>FindClose</var> ends a series of <link id="FindFirst"/>/<link id="FindNext"/> calls,
and frees any memory used by these calls. It is <em>absolutely</em> necessary
to do this call, or huge memory losses may occur.
</p>
          <p>For an example, see <link id="FindFirst"/>.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="FindFirst"/>
          <link id="FindNext"/>
        </seealso>
      </element>
      <element name="FindFirst">
        <short>Start a file search and return a findhandle</short>
        <descr>
          <p>
            <var>FindFirst</var> looks for files that match the name (possibly with
wildcards) in <var>Path</var> and extra attributes <var>Attr</var>. It then fills up the
<var>Rslt</var> record with data gathered about the file. It returns 0 if a file
matching the specified criteria is found, a nonzero value (-1 on Unix-like platforms)
otherwise.
</p>
          <p>
            <var>Attr</var> is an or-ed combination of the following constants:
</p>
          <dl>
            <dt>faReadOnly</dt>
            <dd>The file is read-only.</dd>
            <dt>faHidden</dt>
            <dd>The file is hidden. (On unix, this means that the filename starts with a dot)</dd>
            <dt>faSysFile</dt>
            <dd>The file is a system file (On unix, this means that the file is a character,
block or FIFO file).</dd>
            <dt>faVolumeId</dt>
            <dd>Drive volume Label. Not possible under unix.</dd>
            <dt>faDirectory</dt>
            <dd>File is a directory.</dd>
            <dt>faArchive</dt>
            <dd>file is an archive. Not possible on Unix</dd>
          </dl>
          <p>It is a common misconception that <var>Attr</var> specifies a set of attributes 
which must be matched in order for a file to be included in the list. This is not 
so: The value of <var>Attr</var> specifies <em>additional</em> attributes, this means
that the returned files are either normal files or have an attribute which
is present in <var>Attr</var>. </p>
          <p>Specifically: specifying <var>faDirectory</var> as a value for <var>Attr</var>
does not mean that only directories will be returned. Normal files
<em>and</em> directories will be returned.
</p>
          <p>The <var>Rslt</var> record can be fed to subsequent calls to <var>FindNext</var>, in
order to find other files matching the specifications.
</p>
          <remark>A <var>FindFirst</var> call must <em>always</em> be followed by a
<link id="FindClose">FindClose</link> call with the same <var>Rslt</var> record. Failure to do so will
result in memory loss.
</remark>
        </descr>
        <errors>On error the function returns -1 on Unix-like platforms, a nonzero error code on Windows.
</errors>
        <seealso>
          <link id="FindClose"/>{FindCloseSys}, <link id="FindNext"/>.
</seealso>
        <example file="sysutex/ex43"/>
      </element>
      <element name="FindNext">
        <short>Find the next entry in a findhandle.</short>
        <descr>
          <p>
            <var>FindNext</var> finds a next occurrence of a search sequence initiated by
<var>FindFirst</var>. If another record matching the criteria in Rslt is found, 0
is returned, a nonzero constant is returned otherwise.
</p>
          <remark>The last <var>FindNext</var> call must <em>always</em> be followed by a
<var>FindClose</var> call with the same <var>Rslt</var> record. Failure to do so will
result in memory loss.
</remark>
          <p>For an example, see <link id="FindFirst"/>
          </p>
        </descr>
        <errors>On error (no more file is found), a nonzero constant is returned.
</errors>
        <seealso>
          <link id="FindFirst"/>
          <link id="FindClose"/>
        </seealso>
      </element>
      <element name="GetDirs">
        <short>Return a list of directory names from a path.</short>
        <descr>
          <var>GetDirs</var> splits DirName in a null-byte separated list of directory names,
<var>Dirs</var> is an array of <var>PChars</var>, pointing to these directory names.
The function returns the number of directories found, or -1 if none were found.
DirName must contain only OSDirSeparator as Directory separator chars.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="ExtractRelativePath"/>
        </seealso>
        <example file="sysutex/ex45"/>
      </element>
      <element name="RenameFile">
        <short>Rename a file.</short>
        <descr>
          <var>RenameFile</var> renames a file from <var>OldName</var> to <var>NewName</var>. The
function returns <var>True</var> if successful, <var>False</var> otherwise.

<em>Remark:</em> you cannot rename across disks or partitions.
</descr>
        <errors>On Error, <var>False</var> is returned.
</errors>
        <seealso>
          <link id="DeleteFile"/>
        </seealso>
        <example file="sysutex/ex44"/>
      </element>
      <element name="SetDirSeparators">
        <short>Set the directory separators to the known directory separators.</short>
        <descr>
          <var>SetDirSeparators</var> returns <var>FileName</var> with all possible
DirSeparators replaced by <var>OSDirSeparator</var>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="ExpandFileName"/>
          <link id="ExtractFilePath"/>
          <link id="ExtractFileDir"/>
        </seealso>
        <example file="sysutex/ex47"/>
      </element>
      <element name="StrAlloc">
        <short>Allocate a null-terminated string on the heap.</short>
        <descr>
          <p>
            <var>StrAlloc</var> reserves memory on the heap for a string with length <var>Len</var>,
terminating <var>#0</var> included, and returns a pointer to it.
</p>
          <p>Additionally, <var>StrAlloc</var> allocates 4 extra bytes to store the size of
the allocated memory. Therefore this function is NOT compatible with the
<link id="#rtl.strings.StrAlloc">StrAlloc</link> function of the <var>Strings</var> unit.
</p>
          <p>For an example, see <link id="StrBufSize"/>.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrBufSize"/>
          <link id="StrDispose"/>
          <link id="#rtl.strings.StrAlloc">StrAlloc</link>
        </seealso>
      </element>
      <element name="StrBufSize">
        <short>Return the size of a null-terminated string allocated on the heap.</short>
        <descr>
          <var>StrBufSize</var> returns the memory allocated for <var>Str</var>. This function
ONLY gives the correct result if <var>Str</var> was allocated using
<link id="StrAlloc">StrAlloc</link>.
</descr>
        <errors>If no more memory is available, a runtime error occurs.
</errors>
        <seealso>
          <link id="StrAlloc">StrAlloc</link>
          <link id="StrDispose"/>
        </seealso>
        <example file="sysutex/ex46"/>
      </element>
      <element name="StrDispose">
        <short>Dispose of a null-terminated string on the heap.</short>
        <descr>
          <p>
            <var>StrDispose</var> frees any memory allocated for <var>Str</var>. This function
will only function correctly if <var>Str</var> has been allocated using
<link id="StrAlloc">StrAlloc</link> from the <file>SysUtils</file> unit.
</p>
          <p>For an example, see <link id="StrBufSize"/>.
</p>
        </descr>
        <errors>If an invalid pointer is passed, or a pointer not allocated with
<var>StrAlloc</var>, an error may occur.
</errors>
        <seealso>
          <link id="StrBufSize"/>
          <link id="StrAlloc"/>
          <link id="StrDispose"/>
        </seealso>
      </element>
      <element name="StrPCopy">
        <short>Copy an ansistring to a null-terminated string.</short>
        <descr>
          <p>
            <var>StrPCopy</var> Converts the Ansistring in <var>Source</var> to a Null-terminated
string, and copies it to <var>Dest</var>. <var>Dest</var> needs enough room to contain
the string <var>Source</var>, i.e. <var>Length(Source)+1</var> bytes.
</p>
        </descr>
        <errors>No checking is performed to see whether <var>Dest</var> points to enough memory
to contain <var>Source</var>.
</errors>
        <seealso>
          <link id="StrPLCopy"/>
          <link id="StrPas"/>
        </seealso>
      </element>
      <element name="StrPLCopy">
        <short>Copy a limited number of characters from an ansistring to a
null-terminated string.</short>
        <descr>
          <var>StrPLCopy</var> Converts maximally <var>MaxLen</var> characters of the
Ansistring in <var>Source</var> to a Null-terminated  string, and copies
it to <var>Dest</var>. <var>Dest</var> needs enough room to contain
the  characters.
</descr>
        <errors>No checking is performed to see whether <var>Dest</var> points to enough memory
to contain L characters of <var>Source</var>.
</errors>
        <seealso>
          <link id="StrPCopy"/>.
</seealso>
      </element>
      <element name="StrPas">
        <short>Convert a null-terminated string to an ansistring.</short>
        <descr>
          <p>Converts a null terminated string in <var>Str</var> to an Ansitring, and returns
this string. This string is NOT truncated at 255 characters as is the
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrPCopy"/>
          <link id="StrPLCopy"/>
        </seealso>
      </element>
      <element name="AdjustLineBreaks">
        <short>Convert possible line-endings to the currently valid line ending.</short>
        <descr>
          <var>AdjustLineBreaks</var> will change all occurrences of <var>#13</var> and
<var>#10</var> characters with the correct line-ending characters for the
current platform. This is <var>#13#10</var> on Windows and Dos. On Unix-like 
platforms, this is <var>#10</var> and for Mac OS X it is <var>#13</var>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiCompareStr"/>
          <link id="AnsiCompareText"/>
        </seealso>
        <example file="sysutex/ex48"/>
      </element>
      <element name="AnsiCompareStr">
        <short>Compare 2 ansistrings, case sensitive, ignoring accents characters.</short>
        <descr>
          <p>
            <var>AnsiCompareStr</var> compares two strings and returns the following
result:
</p>
          <dl>
            <dt>&lt; 0</dt>
            <dd>if <var>S1&lt;S2</var>.</dd>
            <dt>0</dt>
            <dd>if <var>S1=S2</var>.</dd>
            <dt>&gt; 0</dt>
            <dd>if <var>S1&gt;S2</var>.</dd>
          </dl>
          <p>The comparision takes into account Ansi characters, i.e. it takes
care of strange accented characters. Contrary to <link id="AnsiCompareText"/>,
the comparision is case sensitive.
</p>
          <remark>A widestring manager must be installed in order for this function to work
correctly with various character sets.
</remark>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AdjustLineBreaks"/>
          <link id="AnsiCompareText"/>
        </seealso>
        <example file="sysutex/ex49"/>
      </element>
      <element name="AnsiCompareText">
        <short>Compare 2 ansistrings, case insensitive, ignoring accents characters.</short>
        <descr>
          <p>
            <var>AnsiCompareText</var> compares two strings and returns the following
result:
</p>
          <dl>
            <dt>&lt;0</dt>
            <dd>if <var>S1&lt;S2</var>.</dd>
            <dt>0</dt>
            <dd>if <var>S1=S2</var>.</dd>
            <dt>&gt;0</dt>
            <dd>if <var>S1&gt;S2</var>.</dd>
          </dl>
          <p>the comparision takes into account Ansi characters, i.e. it takes
care of strange accented characters. Contrary to <link id="AnsiCompareStr"/>,
the comparision is case insensitive.
</p>
          <remark>A widestring manager must be installed in order for this function to work
correctly with various character sets.
</remark>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AdjustLineBreaks"/>
          <link id="AnsiCompareText"/>
        </seealso>
        <example file="sysutex/ex50"/>
      </element>
      <element name="AnsiExtractQuotedStr">
        <short>Removes the first quoted string from a string.</short>
        <descr>
          <var>AnsiExtractQuotedStr</var> returns the first quoted string in
<var>Src</var>, and deletes the result from <var>Src</var>. The resulting
string has with <var>Quote</var> characters removed from the beginning and 
end of the string (if they are present), and double <var>Quote</var> 
characters replaced by a single <var>Quote</var> characters. 
As such, it revereses the action of <link id="AnsiQuotedStr"/>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiQuotedStr"/>
        </seealso>
        <example file="sysutex/ex51"/>
      </element>
      <element name="AnsiLastChar">
        <short>Return a pointer to the last character of a string.</short>
        <descr>
          <p>This function returns a pointer to the last character of <var>S</var>.
</p>
          <remark>A widestring manager must be installed in order for this function to work
correctly with various character sets. If none is installed, this function 
is the same as <var>@S[Length[S]]</var>.
</remark>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiStrLastChar"/>
        </seealso>
        <example file="sysutex/ex52"/>
      </element>
      <element name="AnsiLowerCase">
        <short>Return a lowercase version of a string.</short>
        <descr>
          <p>
            <var>AnsiLowerCase</var> converts the string <var>S</var> to lowercase characters
and returns the resulting string.
It takes into account the operating system language
settings when doing this, so spcial characters are converted correctly as
well.
</p>
          <remark>A widestring manager must be installed in order for this function to work
correctly with various character sets.
</remark>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiUpperCase"/>
          <link id="AnsiStrLower"/>
          <link id="AnsiStrUpper"/>
        </seealso>
        <example file="sysutex/ex53"/>
      </element>
      <element name="AnsiQuotedStr">
        <short>Return a quoted version of a string.</short>
        <descr>
          <p>
            <var>AnsiQuotedString</var> quotes the string <var>S</var> and returns the result.
This means that it puts the <var>Quote</var> character at both the beginning and
end of the string and replaces any occurrence of <var>Quote</var> in <var>S</var>
with 2 <var>Quote</var> characters. The action of <var>AnsiQuotedString</var> can be
reversed by <link id="AnsiExtractQuotedStr"/>.
</p>
          <p>For an example, see <link id="AnsiExtractQuotedStr"/>
          </p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiExtractQuotedStr"/>
        </seealso>
      </element>
      <element name="AnsiStrComp">
        <short>Compare two null-terminated strings. Case sensitive.</short>
        <descr>
          <p>
            <var>AnsiStrComp</var> compares 2 <var>PChar</var> strings, and returns the following
result:
</p>
          <dl>
            <dt>&lt;0</dt>
            <dd>if <var>S1&lt;S2</var>.</dd>
            <dt>0</dt>
            <dd>if <var>S1=S2</var>.</dd>
            <dt>&gt;0</dt>
            <dd>if <var>S1&gt;S2</var>.</dd>
          </dl>
          <p>The comparision of the two strings is case-sensitive.
</p>
          <remark>A widestring manager must be installed in order for this function to work
correctly with various character sets.
</remark>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiCompareText"/>
          <link id="AnsiCompareStr"/>
        </seealso>
        <example file="sysutex/ex54"/>
      </element>
      <element name="AnsiStrIComp">
        <short>Compare two null-terminated strings. Case insensitive.</short>
        <descr>
          <p>
            <var>AnsiStrIComp</var> compares 2 <var>PChar</var> strings, and returns the following
result:
</p>
          <dl>
            <dt>&lt;0</dt>
            <dd>if <var>S1&lt;S2</var>.</dd>
            <dt>0</dt>
            <dd>if <var>S1=S2</var>.</dd>
            <dt>&gt;0</dt>
            <dd>if <var>S1&gt;S2</var>.</dd>
          </dl>
          <p>The comparision of the two strings is case-insensitive.
</p>
          <remark>A widestring manager must be installed in order for this function to work
correctly with various character sets.
</remark>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiCompareText"/>
          <link id="AnsiCompareStr"/>
        </seealso>
        <example file="sysutex/ex55"/>
      </element>
      <element name="AnsiStrLastChar">
        <short>Return a pointer to the last character of a string.</short>
        <descr>
          <p>Return a pointer to the last character of the null-terminated string.
</p>
          <remark>A widestring manager must be installed in order for this function to work
correctly with various character sets. If none is installed, this function 
is the same as <var>@S[Length[S]]</var>.
</remark>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiCompareText"/>
          <link id="AnsiCompareStr"/>
        </seealso>
        <example file="sysutex/ex56"/>
      </element>
      <element name="AnsiStrLIComp">
        <short>Compares a given number of characters of a string, case insensitive.</short>
        <descr>
          <p>
            <var>AnsiStrLIComp</var> compares the first <var>Maxlen</var> characters of
2 <var>PChar</var> strings, <var>S1</var> and <var>S2</var>, and returns the following
result:
</p>
          <dl>
            <dt>&lt;0</dt>
            <dd>if <var>S1&lt;S2</var>.</dd>
            <dt>0</dt>
            <dd>if <var>S1=S2</var>.</dd>
            <dt>&gt;0</dt>
            <dd>if <var>S1&gt;S2</var>.</dd>
          </dl>
          <p>The comparision of the two strings is case-insensitive.
</p>
          <remark>A widestring manager must be installed in order for this function to work
correctly with various character sets.
</remark>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiCompareText"/>
          <link id="AnsiCompareStr"/>
        </seealso>
        <example file="sysutex/ex57"/>
      </element>
      <element name="AnsiStrLower">
        <short>Convert a null-terminated string to all-lowercase characters.</short>
        <descr>
          <p>
            <var>AnsiStrLower</var> converts the PChar <var>Str</var> to lowercase characters
and returns the resulting pchar. Note that <var>Str</var> itself is modified,
not a copy, as in the case of <link id="AnsiLowerCase"/>.
It takes into account the operating system language
settings when doing this, so special characters are converted correctly as
well.
</p>
          <remark>A widestring manager must be installed in order for this function to work
correctly with various character sets.
</remark>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiStrUpper"/>
          <link id="AnsiLowerCase"/>
        </seealso>
        <example file="sysutex/ex59"/>
      </element>
      <element name="AnsiStrUpper">
        <short>Convert a null-terminated string to all-uppercase characters.</short>
        <descr>
          <p>
            <var>AnsiStrUpper</var> converts the <var>PChar</var>
            <var>Str</var> to uppercase characters
and returns the resulting string. Note that <var>Str</var> itself is modified,
not a copy, as in the case of <link id="AnsiUpperCase"/>.
It takes into account the operating system language
settings when doing this, so special characters are converted correctly as
well.
</p>
          <remark>A widestring manager must be installed in order for this function to work
correctly with various character sets.
</remark>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiUpperCase"/>
          <link id="AnsiStrLower"/>
          <link id="AnsiLowerCase"/>
        </seealso>
        <example file="sysutex/ex60"/>
      </element>
      <element name="AnsiUpperCase">
        <short>Return an uppercase version of a string, taking into account special
characters.</short>
        <descr>
          <p>
            <var>AnsiUpperCase</var> converts the string <var>S</var> to uppercase characters
and returns the resulting string. It takes into account the operating system language
settings when doing this, so special characters are converted correctly as
well.
</p>
          <remark>A widestring manager must be installed in order for this function to work
correctly with various character sets.
</remark>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiStrUpper"/>
          <link id="AnsiStrLower"/>
          <link id="AnsiLowerCase"/>
        </seealso>
        <example file="sysutex/ex61"/>
      </element>
      <element name="AppendStr">
        <short>Append one ansistring to another.</short>
        <descr>
          <p>
            <var>AppendStr</var> appends <var>S</var> to Dest.
</p>
          <p>This function is provided for Delphi
compatibility only, since it is completely equivalent to <var>Dest:=Dest+S</var>.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AssignStr"/>
          <link id="NewStr"/>
          <link id="DisposeStr"/>
        </seealso>
        <example file="sysutex/ex62"/>
      </element>
      <element name="AssignStr">
        <short>Assigns an ansistring to a null-terminated string.</short>
        <descr>
          <p>
            <var>AssignStr</var> allocates <var>S</var> to <var>P</var>. The old value of <var>P</var> is
disposed of.
</p>
          <p>This function is provided for Delphi compatibility only. <var>AnsiStrings</var>
are managed on the heap and should be preferred to the mechanism of
dynamically allocated strings.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="NewStr"/>
          <link id="AppendStr"/>
          <link id="DisposeStr"/>
        </seealso>
        <example file="sysutex/ex63"/>
      </element>
      <element name="BCDToInt">
        <short>Convert a BCD coded integer to a normal integer.</short>
        <descr>
          <var>BCDToInt</var> converts a <var>BCD</var> coded integer to a normal integer.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrToInt"/>
          <link id="IntToStr"/>
        </seealso>
        <example file="sysutex/ex64"/>
      </element>
      <element name="CompareMem">
        <short>Compare two memory areas.</short>
        <descr>
          <p>
            <var>CompareMem</var> compares, byte by byte,  2 memory areas pointed
to by <var>P1</var> and <var>P2</var>, for a length of <var>L</var> bytes.
</p>
          <p>It returns the following values:
</p>
          <dl>
            <dt>&lt;0</dt>
            <dd>if at some position the byte at <var>P1</var> is less than the byte at the
same postion at <var>P2</var>.
</dd>
            <dt>0</dt>
            <dd>if all <var>L</var> bytes are the same.</dd>
            <dt>&gt;0</dt>
            <dd>if at some position the byte at <var>P1</var> is greater than the
byte at the same postion at <var>P2</var>.</dd>
          </dl>
        </descr>
        <errors/>
        <seealso/>
      </element>
      <element name="CompareStr">
        <short>Compare 2 ansistrings case-sensitively, ignoring special characters.</short>
        <descr>
          <p>
            <var>CompareStr</var> compares two strings, <var>S1</var> and <var>S2</var>,
and returns the following
result:
</p>
          <dl>
            <dt>&lt;0</dt>
            <dd>if <var>S1&lt;S2</var>.</dd>
            <dt>0</dt>
            <dd>if <var>S1=S2</var>.</dd>
            <dt>&gt;0</dt>
            <dd>if <var>S1&gt;S2</var>.</dd>
          </dl>
          <p>The comparision of the two strings is case-sensitive.
The function does not take internationalization settings into account, it
simply compares ASCII values.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiCompareText"/>
          <link id="AnsiCompareStr"/>
          <link id="CompareText"/>
        </seealso>
        <example file="sysutex/ex65"/>
      </element>
      <element name="CompareText">
        <short>Compare two ansistrings case insensitive (assuming ASCII encoding).</short>
        <descr>
          <p>
            <var>CompareText</var> compares two strings, <var>S1</var> and <var>S2</var>,
and returns the following result:
</p>
          <dl>
            <dt>&lt;0</dt>
            <dd>if <var>S1&lt;S2</var>.</dd>
            <dt>0</dt>
            <dd>if <var>S1=S2</var>.</dd>
            <dt>&gt;0</dt>
            <dd>if <var>S1&gt;S2</var>.</dd>
          </dl>
          <p>The comparision is case-insensitive for ASCII characters, else case sensitive.</p>
          <p>When the strings have a different length, and are equal up to the size of the shorter string,
the result reflects the length difference of the string</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiCompareText"/>
          <link id="AnsiCompareStr"/>
          <link id="CompareStr"/>
        </seealso>
        <example file="sysutex/ex66"/>
      </element>
      <element name="DisposeStr">
        <short>Dispose an ansistring from the heap.</short>
        <descr>
          <p>
            <var>DisposeStr</var> removes the dynamically allocated string <var>S</var> from the
heap, and releases the occupied memory.
</p>
          <p>This function is provided for Delphi compatibility only. <var>AnsiStrings</var>
are managed on the heap and should be preferred to the mechanism of
dynamically allocated strings.
</p>
          <p>For an example, see <link id="DisposeStr"/>.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="NewStr"/>
          <link id="AppendStr"/>
          <link id="AssignStr"/>
        </seealso>
      </element>
      <element name="FloatToStr">
        <short>Convert a float value to a string using a fixed format.</short>
        <descr>
          <p>
            <var>FloatToStr</var> converts the floating point variable <var>Value</var> to a
string representation.  It will choose the shortest possible notation of the
two following formats:
</p>
          <dl>
            <dt>Fixed format</dt>
            <dd>will represent the string in fixed notation,
</dd>
            <dt>Decimal format</dt>
            <dd>will represent the string in scientific
notation.</dd>
          </dl>
          <p>More information on these formats can be found in <link id="FloatToStrF"/>.
<var>FloatToStr</var> is completely equivalent to the following call:
</p>
          <code>FloatToStrF(Value, ffGeneral,15, 0);
</code>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="FloatToStrF"/>
          <link id="FormatFloat"/>
          <link id="StrToFloat"/>
        </seealso>
        <example file="sysutex/ex67"/>
      </element>
      <element name="FloatToStrF">
        <short>Convert a float value to a string using a given format.</short>
        <descr>
          <p>
            <var>FloatToStrF</var> converts the floating point number <var>value</var> to a string
representation, according to the settings of the parameters <var>Format</var>,
<var>Precision</var> and <var>Digits</var>.
</p>
          <p>The meaning of the <var>Precision</var> and <var>Digits</var> parameter depends on the
<var>Format</var> parameter. The format is controlled mainly by the <var>Format</var>
parameter. It can have one of the following values:
</p>
          <dl>
            <dt>ffcurrency</dt>
            <dd>Money format. <var>Value</var> is converted to a string using
the global variables <var>CurrencyString</var>, <var>CurrencyFormat</var> and
<var>NegCurrencyFormat</var>. The <var>Digits</var> paramater specifies the number of digits
following the decimal point and should be in the range -1 to 18. If Digits
equals <var>-1</var>, <var>CurrencyDecimals</var> is assumed. The <var>Precision</var> parameter is ignored.
</dd>
            <dt>ffExponent</dt>
            <dd>Scientific format. <var>Value</var> is converted to a
string using scientific notation: 1 digit before the decimal point, possibly
preceded by a minus sign if <var>Value</var> is negative. The number of
digits after the decimal point is controlled by <var>Precision</var> and must lie
in the range 0 to 15.
</dd>
            <dt>ffFixed</dt>
            <dd>Fixed point format. <var>Value</var> is converted to a string
using fixed point notation. The result is composed of all digits of the
integer part of <var>Value</var>, preceded by a minus sign if <var>Value</var> is
negative. Following the integer part is <var>DecimalSeparator</var> and then the
fractional part of <var>Value</var>, rounded off to <var>Digits</var> numbers.
If the number is too large then the result will be in scientific notation.
</dd>
            <dt>ffGeneral</dt>
            <dd>General number format. The argument is converted to a
string using <var>ffExponent</var> or <var>ffFixed</var> format, depending on wich one
gives the shortest string. There will be no trailing zeroes. If <var>Value</var>
is less than <var>0.00001</var> or if the number of decimals left of the decimal
point is larger than <var>Precision</var> then scientific notation is used, and
<var>Digits</var> is the minimum number of digits in the exponent. Otherwise
<var>Digits</var> is ignored.
</dd>
            <dt>ffnumber</dt>
            <dd>Is the same as <var>ffFixed</var>, except that thousand separators
are inserted in the resultig string.
</dd>
          </dl>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="FloatToStr"/>
          <link id="FloatToText"/>
        </seealso>
        <example file="sysutex/ex68"/>
      </element>
      <element name="FloatToText">
        <short>Return a string representation of a float, with a given format.</short>
        <descr>
          <p>
            <var>FloatToText</var> converts the floating point variable <var>Value</var> to a
string representation and stores it in <var>Buffer</var>.  The conversion is
governed by <var>format</var>, <var>Precisison</var> and <var>Digits</var>.
more information on these parameters can be found in <link id="FloatToStrF"/>.
<var>Buffer</var> should point to enough space to hold the result. No checking on
this is performed.
</p>
          <p>The result is the number of characters that was copied in <var>Buffer</var>.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="FloatToStr"/>
          <link id="FloatToStrF"/>
        </seealso>
        <example file="sysutex/ex69"/>
      </element>
      <element name="FmtStr">
        <short>Format a string with given arguments.</short>
        <descr>
          <var>FmtStr</var> calls <link id="Format"/> with <var>Fmt</var> and <var>Args</var> as arguments,
and stores the result in <var>Res</var>. For more information on how the
resulting string is composed, see <link id="Format"/>.
</descr>
        <errors>In case of error, a <var>EConvertError</var> exception is raised.
</errors>
        <seealso>
          <link id="Format"/>
          <link id="FormatBuf"/>.
</seealso>
        <example file="sysutex/ex70"/>
      </element>
      <element name="Format">
        <short>Format a string with given arguments.</short>
        <descr>
          <p>Format replaces all placeholders in<var>Fmt</var> with the arguments passed in
<var>Args</var> and returns the resulting string. A placeholder looks as follows:
</p>
          <code>'%' [[Index]':'] ['-'] [Width] ['.' Precision] ArgType
</code>
          <p>elements between single quotes must be typed as shown without the quotes,
and elements between square brackets <var>[ ]</var> are optional. The meaning
of the different elements is shown below:
</p>
          <dl>
            <dt>'%'</dt>
            <dd>starts the placeholder. If you want to insert a literal
<var>%</var> character, then you must insert two of them : <var>%%</var>.
</dd>
            <dt>Index ':'</dt>
            <dd>takes the <var>Index</var>-th element in the argument array
as the element to insert. If <var>index</var> is omitted, then the zeroth argument
is taken.
</dd>
            <dt>'-'</dt>
            <dd>tells <var>Format</var> to left-align the inserted text. The default
behaviour is to right-align inserted text. This can only take effect if the
<var>Width</var> element is also specified.
</dd>
            <dt>Width</dt>
            <dd>the inserted string must have at least have <var>Width</var>
characters. If not, the inserted string will be padded with spaces. By
default, the string is left-padded, resulting in a right-aligned string.
This behaviour can be changed by the <var>'-'</var> character.
</dd>
            <dt>'.' Precision</dt>
            <dd>Indicates the precision to be used when converting
the argument. The exact meaning of this parameter depends on <var>ArgType</var>.
</dd>
          </dl>
          <p>The <var>Index</var>, <var>Width</var> and <var>Precision</var> parameters can be replaced
by <var>*</var>, in which case their value will be read from the next element in
the <var>Args</var> array. This value must be an integer, or an
<var>EConvertError</var> exception will be raised.
</p>
          <p>The argument type is determined from <var>ArgType</var>. It can have one of the
following values (case insensitive):
</p>
          <dl>
            <dt>D</dt>
            <dd>Decimal format. The next argument in the <var>Args</var> array should be
an integer. The argument is converted to a decimal string. If precision is
specified, then the string will have at least <var>Precision</var> digits in it.
If needed, the string is (left) padded with zeroes.
</dd>
            <dt>E</dt>
            <dd>
              <p>Scientific format. The next argument in the <var>Args</var> array should
be a Floating point value. The argument is converted to a decimal string
using scientific notation, using <link id="FloatToStrF"/>, where the optional
precision is used to specify the total number of decimals. (defalt a valueof
15 is used). The exponent is formatted using maximally 3 digits.
</p>
              <p>In short, the <var>E</var> specifier formats it's argument as follows:
</p>
              <code>FloatToStrF(Argument,ffexponent,Precision,3)
</code>
            </dd>
            <dt>F</dt>
            <dd>
              <p>Fixed point format. The next argument in the <var>Args</var> array
should be a floating point value. The argument is converted to a
decimal string, using fixed notation (see <link id="FloatToStrF"/>).
<var>Precision</var> indicates the number of digits following the
decimal point.
</p>
              <p>In short, the <var>F</var> specifier formats it's argument as follows:
</p>
              <code>FloatToStrF(Argument,ffFixed,ffixed,9999,Precision)
</code>
            </dd>
            <dt>G</dt>
            <dd>
              <p>General number format. The next argument in the <var>Args</var> array
should be a floating point value. The argument is converted to a decimal
string using fixed point notation or scientific notation, depending on which
gives the shortest result. <var>Precision</var> is used to determine the number
of digits after the decimal point.
</p>
              <p>In short, the <var>G</var> specifier formats it's argument as follows:
</p>
              <code>FloatToStrF(Argument,ffGeneral,Precision,3)
</code>
            </dd>
            <dt>M</dt>
            <dd>
              <p>Currency format. the next argument in the var{Args} array must
be a floating point value. The argument is converted to a decimal string
using currency notation. This means that fixed-point notation is used, but
that the currency symbol is appended. If precision is specified, then
then it overrides the <var>CurrencyDecimals</var> global variable used in the
<link id="FloatToStrF"/>
              </p>
              <p>In short, the <var>M</var> specifier formats it's argument as follows:
</p>
              <code>FloatToStrF(Argument,ffCurrency,9999,Precision)
</code>
            </dd>
            <dt>N</dt>
            <dd>Number format. This is the same as fixed point format, except that
thousand separators are inserted in the resulting string.
</dd>
            <dt>P</dt>
            <dd>Pointer format. The next argument in the <var>Args</var> array must be a
pointer (typed or untyped). The pointer value is converted to a string of
length 8, representing the hexadecimal value of the pointer.
</dd>
            <dt>S</dt>
            <dd>String format. The next argument in the <var>Args</var> array must be
a string. The argument is simply copied to the result string. If
<var>Precision</var> is specified, then only <var>Precision</var> characters are
copied to the result string.
</dd>
            <dt>U</dt>
            <dd>Unsigned decimal format. The next argument in the <var>Args</var> array should be
an unsigned integer. The argument is converted to a decimal string. If precision is
specified, then the string will have at least <var>Precision</var> digits in it.
If needed, the string is (left) padded with zeroes.
</dd>
            <dt>X</dt>
            <dd>hexadecimal format. The next argument in the <var>Args</var> array must
be an integer. The argument is converted to a hexadecimal string with just
enough characters to contain the value of the integer. If <var>Precision</var>
is specified then the resulting hexadecimal representation will have at
least <var>Precision</var> characters in it (with a maximum value of 32).
</dd>
          </dl>
        </descr>
        <errors>
          <p>In case of error, an <var>EConversionError</var> exception is raised. Possible
errors are:
</p>
          <ol>
            <li>Errors in the format specifiers.</li>
            <li>The next argument is not of the type needed by a specifier.</li>
            <li>The number of arguments is not sufficient for all format specifiers.</li>
          </ol>
        </errors>
        <seealso>
          <link id="FormatBuf"/>
        </seealso>
        <example file="sysutex/ex71"/>
      </element>
      <element name="FormatBuf">
        <short>Format a string with given arguments and store the result in a buffer.</short>
        <descr>
          <var>FormatBuf</var> calls <link id="Format"/> and stores the result in <var>Buf</var>.
</descr>
        <seealso>
          <link id="Format"/>
        </seealso>
        <example file="sysutex/ex72"/>
      </element>
      <element name="FormatFloat">
        <short>Format a float according to a certain mask.</short>
        <descr>
          <p>
            <var>FormatFloat</var> formats the floating-point value given by <var>Value</var> using 
the format specifications in <var>Format</var>. The format specifier can give
format specifications for positive, negative or zero values (separated by 
a semicolon).
</p>
          <p>If the formatspecifier is empty or the value needs more than 18 digits to
be correctly represented, the result is formatted with a call to 
<link id="FloatToStrF"/> with the <var>ffGeneral</var> format option.
</p>
          <p>The following format specifiers are supported:
</p>
          <dl>
            <dt>0</dt>
            <dd>is a digit place holder. If there is a corresponding digit in 
the value being formatted, then it replaces the 0. If not, the 0 is left
as-is.
</dd>
            <dt>#</dt>
            <dd>is also a digit place holder. If there is a corresponding digit in
the value being formatted, then it replaces the #. If not, it is removed.
by a space.
</dd>
            <dt>.</dt>
            <dd>determines the location of the decimal point. Only the first '.'
character is taken into account. If the value contains digits after the
decimal point, then it is replaced by the value of the <var>DecimalSeparator</var>
character.
</dd>
            <dt>,</dt>
            <dd>determines the use of the thousand separator character in the
output string. If the format string contains one or more ',' charactes, 
then thousand separators will be used. The <var>ThousandSeparator</var> character
is used.
</dd>
            <dt>E+</dt>
            <dd>determines the use of scientific notation. If 'E+' or 'E-' (or
their lowercase counterparts) are present then scientific notation is used.
The number of digits in the output string is determined by the number of
<var>0</var> characters after the '<var>E+</var>'
</dd>
            <dt>;</dt>
            <dd>This character separates sections for positive, negative, and zero numbers in the
format string.	
</dd>
          </dl>
        </descr>
        <errors>If an error occurs, an exception is raised.
</errors>
        <seealso>
          <link id="FloatToStr"/>
        </seealso>
        <example file="sysutex/ex89"/>
      </element>
      <element name="IntToHex">
        <short>Convert an integer value to a hexadecimal string.</short>
        <descr>
          <var>IntToHex</var> converts <var>Value</var> to a hexadecimal string
representation. The result will contain at least <var>Digits</var>
characters. If <var>Digits</var> is less than the needed number of characters,
the string will NOT be truncated. If <var>Digits</var> is larger than the needed
number of characters, the result is padded with zeroes.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="IntToStr"/>, <var>StrToInt</var>
        </seealso>
        <example file="sysutex/ex73"/>
      </element>
      <element name="IntToStr">
        <short>Convert an integer value to a decimal string.</short>
        <descr>
          <var>IntToStr</var> coverts <var>Value</var> to it's string representation.
The resulting string has only as much characters as needed to represent
the value. If the value is negative a minus sign is prepended to the
string.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="IntToHex"/>
          <link id="StrToInt"/>
        </seealso>
        <example file="sysutex/ex74"/>
      </element>
      <element name="IsValidIdent">
        <short>Check whether a string is a valid identifier name.</short>
        <descr>
          <var>IsValidIdent</var> returns <var>True</var> if <var>Ident</var> can be used as a
compoent name. It returns <var>False</var> otherwise. <var>Ident</var> must consist of
a letter or underscore, followed by a combination of letters, numbers or
underscores to be a valid identifier.
</descr>
        <errors>None.
</errors>
        <seealso/>
        <example file="sysutex/ex75"/>
      </element>
      <element name="LastDelimiter">
        <short>Return the last occurrence of a set of delimiters in a string.</short>
        <descr>
          <var>LastDelimiter</var> returns the <em>last</em> occurrence of any character in
the set <var>Delimiters</var> in the string <var>S</var>.
</descr>
        <errors/>
        <seealso/>
        <example file="sysutex/ex88"/>
      </element>
      <element name="LeftStr">
        <short>Return a number of characters starting at the left of a string.</short>
        <descr>
          <var>LeftStr</var> returns the <var>Count</var> leftmost characters of <var>S</var>.
It is equivalent to a call to <var>Copy(S,1,Count)</var>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="RightStr"/>
          <link id="TrimLeft"/>
          <link id="TrimRight"/>
          <link id="Trim"/>
        </seealso>
        <example file="sysutex/ex76"/>
      </element>
      <element name="LoadStr">
        <short>Load a string from the resource tables.</short>
        <descr>This function is not yet implemented. resources are not yet supported.
</descr>
        <errors/>
        <seealso/>
      </element>
      <element name="LowerCase">
        <short>Return a lowercase version of a string.</short>
        <descr>
          <var>LowerCase</var> returns the lowercase equivalent of <var>S</var>. Ansi characters
are not taken into account, only ASCII codes below 127 are converted. It is
completely equivalent to the lowercase function of the system unit, and is
provided for compatiibility only.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiLowerCase"/>
          <link id="UpperCase"/>
          <link id="AnsiUpperCase"/>
        </seealso>
        <example file="sysutex/ex77"/>
      </element>
      <element name="NewStr">
        <short>Allocate a new ansistring on the heap.</short>
        <descr>
          <p>
            <var>NewStr</var> assigns a new dynamic string on the heap, copies <var>S</var> into
it, and returns a pointer to the newly assigned string.
</p>
          <p>This function is obsolete, and shouldn't be used any more. The
<var>AnsiString</var> mechanism also allocates ansistrings on the heap, and
should be preferred over this mechanism.
</p>
          <p>For an example, see <link id="AssignStr"/>.
</p>
        </descr>
        <errors>If not enough memory is present, an EOutOfMemory exception will be raised.
</errors>
        <seealso>
          <link id="AssignStr"/>
          <link id="DisposeStr"/>
        </seealso>
      </element>
      <element name="QuotedStr">
        <short>Return a quotes version of a string.</short>
        <descr>
          <var>QuotedStr</var> returns the string <var>S</var>, quoted with single quotes. This means
that <var>S</var> is enclosed in single quotes, and every single quote in <var>S</var>
is doubled. It is equivalent to a call to <var>AnsiQuotedStr(s, '''')</var>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiQuotedStr"/>
          <link id="AnsiExtractQuotedStr"/>.
</seealso>
        <example file="sysutex/ex78"/>
      </element>
      <element name="RightStr">
        <short>Return a number of characters from a string, starting at the end.</short>
        <descr>
          <p>
            <var>RightStr</var> returns the <var>Count</var> rightmost characters of <var>S</var>.
It is equivalent to a call to <var>Copy(S,Length(S)+1-Count,Count)</var>.
</p>
          <p>If <var>Count</var> is larger than the actual length of <var>S</var> only the real
length will be used.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="LeftStr"/>
          <link id="Trim"/>
          <link id="TrimLeft"/>
          <link id="TrimRight"/>
        </seealso>
        <example file="sysutex/ex79"/>
      </element>
      <element name="StrFmt">
        <short>Format a string with given arguments, store the result in a buffer.</short>
        <descr>
          <var>StrFmt</var> will format <var>fmt</var> with <var>Args</var>, as the <link id="Format"/>
function does, and it will store the result in <var>Buffer</var>. The function
returns <var>Buffer</var>. <var>Buffer</var> should point to enough space to contain
the whole result.
</descr>
        <errors>for a list of errors, see <link id="Format"/>.
</errors>
        <seealso>
          <link id="StrLFmt"/>
          <link id="FmtStr"/>
          <link id="Format"/>
          <link id="FormatBuf"/>
        </seealso>
        <example file="sysutex/ex80"/>
      </element>
      <element name="StrLFmt">
        <short>Format a string with given arguments, but with limited length.</short>
        <descr>
          <var>StrLFmt</var> will format <var>fmt</var> with <var>Args</var>, as the <link id="Format"/>
function does, and it will store maximally <var>Maxlen characters</var> of the
result in <var>Buffer</var>. The function returns <var>Buffer</var>. <var>Buffer</var>
should point to enough space to contain <var>MaxLen</var> characters.
</descr>
        <errors>for a list of errors, see <link id="Format"/>.
</errors>
        <seealso>
          <link id="StrFmt"/>
          <link id="FmtStr"/>
          <link id="Format"/>
          <link id="FormatBuf"/>
        </seealso>
        <example file="sysutex/ex81"/>
      </element>
      <element name="StrToFloat">
        <short>Convert a string to a floating-point value.</short>
        <descr>
          <p>
            <var>StrToFloat</var> converts the string <var>S</var> to a floating point value.
<var>S</var> should contain a valid string representation of a floating point 
value (either in decimal or scientific notation). The
<var>thousandseparator</var> character may however not be used.
</p>
          <p>Up to and including version 2.2.2 of the compiler, if the string contains a
decimal value, then the decimal separator character can either be a '.' or the
value of the <var>DecimalSeparator</var> variable.
</p>
          <p>As of version 2.3.1, the string may contain only the <var>DecimalSeparator</var> 
character. The dot ('.') can no longer be used instead of the
<var>DecimalSeparator</var>.
</p>
        </descr>
        <errors>If the string <var>S</var> doesn't contain a valid floating point string, then an
exception will be raised.
</errors>
        <seealso>
          <link id="TextToFloat"/>
          <link id="FloatToStr"/>
          <link id="FormatFloat"/>
          <link id="StrToInt"/>
        </seealso>
        <example file="sysutex/ex90"/>
      </element>
      <element name="StrToInt">
        <short>Convert a string to an integer value.</short>
        <descr>
          <p>
            <var>StrToInt</var> will convert the string <var>S</var>to an integer.
If the string contains invalid characters or has an invalid format,
then an <var>EConvertError</var> is raised.
</p>
          <p>To be successfully converted, a string can contain a combination
of <var>numerical</var> characters, possibly preceded by a minus sign (<var>-</var>).
Spaces are not allowed.
</p>
        </descr>
        <errors>In case of error, an <var>EConvertError</var> is raised.
</errors>
        <seealso>
          <link id="IntToStr"/>
          <link id="StrToIntDef"/>
        </seealso>
        <example file="sysutex/ex82"/>
      </element>
      <element name="StrToIntDef">
        <short>Convert a string to an integer value, with a default value.</short>
        <descr>
          <p>
            <var>StrToIntDef</var> will convert a string to an integer. If the string contains
invalid characters or has an invalid format, then <var>Default</var> is returned.
</p>
          <p>To be successfully converted, a string can contain a combination of
<var>numerical</var> characters, possibly preceded by a minus sign (<var>-</var>).
Spaces are not allowed.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="IntToStr"/>
          <link id="StrToInt"/>
        </seealso>
        <example file="sysutex/ex83"/>
      </element>
      <element name="TextToFloat">
        <short>Convert a buffer to a float value.</short>
        <descr>
          <p>
            <var>TextToFloat</var> converts the string in <var>Buffer</var> to a floating point 
value. <var>Buffer</var> should contain a valid stroing representation of a 
floating point value (either in decimal or scientific notation). 
If the buffer contains a decimal value, then the decimal separator 
character can either be a '.' or the value of the <var>DecimalSeparator</var> 
variable.
</p>
          <p>The function returns <var>True</var> if the conversion was successful.
</p>
        </descr>
        <errors>If there is an invalid character in the buffer, then the function returns
<var>False</var>
        </errors>
        <seealso>
          <link id="StrToFloat"/>
          <link id="FloatToStr"/>
          <link id="FormatFloat"/>
        </seealso>
        <example file="sysutex/ex91"/>
      </element>
      <element name="Trim">
        <short>Trim whitespace from the ends of a string.</short>
        <descr>
          <p>
            <var>Trim</var> strips blank characters (spaces) at the beginning and end of <var>S</var>
and returns the resulting string. Only <var>#32</var> characters are stripped.
</p>
          <p>If the string contains only spaces, an empty string is returned.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="TrimLeft"/>
          <link id="TrimRight"/>
        </seealso>
        <example file="sysutex/ex84"/>
      </element>
      <element name="TrimLeft">
        <short>Trim whitespace from the beginning of a string.</short>
        <descr>
          <var>TrimLeft</var> strips blank characters (spaces) at the beginning of <var>S</var>
and returns the resulting string. Only <var>#32</var> characters are stripped.

If the string contains only spaces, an empty string is returned.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="Trim"/>
          <link id="TrimRight"/>
        </seealso>
        <example file="sysutex/ex85"/>
      </element>
      <element name="TrimRight">
        <short>Trim whitespace from the end of a string.</short>
        <descr>
          <var>Trim</var> strips blank characters (spaces) at the end of <var>S</var>
and returns the resulting string. Only <var>#32</var> characters are stripped.

If the string contains only spaces, an empty string is returned.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="Trim"/>
          <link id="TrimLeft"/>
        </seealso>
        <example file="sysutex/ex86"/>
      </element>
      <element name="UpperCase">
        <short>Return an uppercase version of a string.</short>
        <descr>
          <var>UpperCase</var> returns the uppercase equivalent of <var>S</var>. Ansi characters
are not taken into account, only ASCII codes below 127 are converted. It is
completely equivalent to the <var>UpCase</var> function of the system unit, and is
provided for compatiibility only.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiLowerCase"/>
          <link id="LowerCase"/>
          <link id="AnsiUpperCase"/>
        </seealso>
        <example file="sysutex/ex87"/>
      </element>
      <element name="Unix">
        <short>Unix unit.</short>
      </element>
      <element name="errors">
        <short>Error descriptions.</short>
      </element>
      <element name="sysconst">
        <short>Error and other message strings.</short>
      </element>
      <element name="GetLastOSError">
        <short>Return the last code from the OS.</short>
        <descr>
          <p>
            <var>GetLastOSError</var> returns the error code from the last operating
system call. It does not reset this code. In general, it should be called
when an operating system call reported an error condition. In that case,
<var>GetLastOSError</var> gives extended information about the error.
</p>
          <p>No assumptions should be made about the resetting of the error code by
subsequent OS calls. This may be platform dependent.
</p>
        </descr>
        <seealso>
          <link id="RaiseLastOSError"/>
        </seealso>
      </element>
      <!-- procedure Visibility: default -->
      <element name="RaiseLastOSError">
        <short>Raise an exception with the last Operating System error code.</short>
        <descr>
          <var>RaiseLastOSError</var> raises an <link id="EOSError"/> exception with
the error code returned by <var>GetLastOSError</var>. If the Error code is
nonzero, then the corresponding error message will be returned. If the error
code is zero, a standard message will be returned.
</descr>
        <errors>This procedure may not be implemented on all platforms. If it is not, then a
normal <link id="Exception"/> will be raised.
</errors>
        <seealso>
          <link id="EOSError"/>
          <link id="GetLastOSError"/>
          <link id="Exception"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="GetEnvironmentVariable">
        <short>Return the value of an environment variable.</short>
        <descr>
          <p>
            <var>GetEnvironmentVariable</var> returns the value of the <var>EnvVar</var>
environment variable. If the specified variable does not exist or
<var>EnvVar</var> is empty, an empty string is returned.
</p>
        </descr>
        <seealso>
          <link id="GetEnvironmentString"/>
          <link id="GetEnvironmentVariableCount"/>
          <example file="sysutex/ex93"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="GetEnvironmentVariableCount">
        <short>Return the number of variables in the environment.</short>
        <descr>
          <p>
            <var>GetEnvironmentVariableCount</var> returns the number of variables in
the environment. The number is 1 based, but the result may be zero if there
are no environment variables.
</p>
        </descr>
        <errors>If there is no environment, -1 may be returned.
</errors>
        <seealso>
          <link id="GetEnvironmentString"/>
          <link id="GetEnvironmentVariable"/>
        </seealso>
        <example file="sysutex/ex92"/>
      </element>
      <element name="GetEnvironmentString">
        <short>Return an environment variable by index.</short>
        <descr>
          <p>
            <var>GetEnvironmentString</var> returns the <var>Index</var>-th environment
variable. The index is 1 based, and is bounded from above by the result of <link id="GetEnvironmentVariableCount"/>.
</p>
          <p>For an example, <link id="GetEnvironmentVariableCount"/>.
</p>
          <remark>Note that on Windows, environment strings can start with an equal sign (=).
This is a trick used to pass the current working directory to a newly created
proces. In this case, extracting the variable name as the characters before
the first equal sign will result in an empty name.
</remark>
        </descr>
        <errors>If there is no environment, an empty string is returned.
</errors>
        <seealso>
          <link id="GetEnvironmentVariable"/>
          <link id="GetEnvironmentVariableCount"/>
        </seealso>
      </element>
      <!-- procedure Visibility: default -->
      <element name="Sleep">
        <short>Suspend execution of a program for a certain time.</short>
        <descr>
          <p>
            <var>Sleep</var> suspends the execution of the program for
the specified number of milliseconds (<var>milliseconds</var>). 
After the specified period has expired, program execution resumes.
</p>
          <remark>The indicated time is not exact, i.e. it is a minimum time. No
guarantees are made as to the exact duration of the suspension. 
</remark>
        </descr>
      </element>
      <!-- function Visibility: default -->
      <element name="ExecuteProcess">
        <short>Execute another process (program).</short>
        <descr>
          <var>ExecuteProcess</var> will execute the program in <var>Path</var>,
passing it the arguments in <var>ComLine</var>. <var>ExecuteProcess</var>
will then wait for the program to finish, and will return the exit code of
the executed program. In case <var>ComLine</var> is a single string, it will
be split out in an array of strings, taking into account common whitespace
and quote rules.
</descr>
        <errors>In case the program could not be executed or an other error occurs, 
an <link id="EOSError"/> exception  will be raised.
</errors>
        <seealso>
          <link id="EOSError"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="GetAppConfigDir">
        <short>Return the appropriate directory for the application's configuration files.</short>
        <descr>
          <p>
            <var>GetAppConfigDir</var> returns the name of a directory in which the
application should store its configuration files on the current OS. 
If the parameter <var>Global</var> is <var>True</var> then the directory 
returned is a global
directory, i.e. valid for all users on the system. If the parameter
<var>Global</var> is false, then the directory is specific for the user who
is executing the program. On systems that do not support multi-user
environments, these two directories may be the same.
</p>
          <p>The directory which is returned is the name of the directory where the application is
supposed to store files. This does not mean that the directory exists, or
that the user can write in this directory (especially if
<var>Global</var>=<var>True</var>). It just returns the name of the
appropriate location. Also note that the returned name does not contain a ending
path delimiter.
</p>
          <p>On systems where the operating system provides a call to determine this
location, this call will be used. On systems where there is no such call, 
an algorithm is used which reflects common practice on that system.
</p>
          <p>The application name is deduced from the binary name via the <link id="ApplicationName"/>
call, but can be configured by means of the <link id="OnGetApplicationName"/> callback.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="GetAppConfigFile"/>
          <link id="ApplicationName"/>
          <link id="OnGetApplicationName"/>
          <link id="CreateDir"/>
          <link id="SysConfigDir"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="GetAppConfigFile">
        <short>Return an appropriate name for an application configuration file.</short>
        <descr>
          <p>
            <var>GetAppConfigFile</var> returns the name of a file in which the
application can store its configuration parameters. The <var>Global</var>
parameter determines whether it is a global configuration file
(value <var>True</var>) or a personal configuration file (value
<var>False</var>). The parameter <var>SubDir</var>, in case it is set to
<var>True</var>, will insert the name of a
directory before the filename. This can be used in case the application
needs to store other data than configuration data in an application-specific
directory. Default behaviour is to set this to <var>False</var>. The default
file extension of the returned file is: .cfg
</p>
          <p>No assumptions should be made about the existence or writeability of this 
file, or the directory where the file should reside. 
</p>
          <p>On systems where the operating system provides a call to determine the
location of configuration files, this call will be used. On systems 
where there is no such call, an algorithm is used which reflects common 
practice on that system.
</p>
          <p>The application name is deduced from the binary name via the <link id="ApplicationName"/>
call, but can be configured by means of the <link id="OnGetApplicationName"/> callback.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="GetAppConfigDir"/>
          <link id="OnGetApplicationName"/>
          <link id="ApplicationName"/>
          <link id="CreateDir"/>
          <link id="ConfigExtension"/>
          <link id="SysConfigDir"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="ApplicationName">
        <short>Return a default application name</short>
        <descr>
          <p>
            <var>ApplicationName</var> returns the name of the current application.
Standard this is equal to the result of <var>ParamStr(0)</var>, but it can 
be customized by setting the <link id="OnGetApplicationName"/> callback.
</p>
          <p>Note that the returned value is only the <var>name</var> portion. It does
not contain any path or file extension.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="GetAppConfigDir"/>
          <link id="OnGetApplicationName"/>
          <link id="GetAppConfigFile"/>
          <link id="ConfigExtension"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="ConfigExtension">
        <short>Default application configuration file extension.</short>
        <descr>
          <var>ConfigExtension</var> is the default extension used by the
<link id="GetAppConfigFile"/> call. It can be set to any valid extension for
the current OS.
</descr>
        <errors/>
        <seealso/>
      </element>
      <!-- constant Visibility: default -->
      <element name="SysConfigDir">
        <short>System configuration directory.</short>
        <descr>
          <p>
            <var>SysConfigDir</var> is the default system configuration directory. It is
set at application startup by the <file>sysutils</file> initialization
routines.
</p>
          <p>This directory may be returned by the <link id="GetAppConfigDir"/> call on
some systems.
</p>
        </descr>
        <errors/>
        <seealso>
          <link id="GetAppConfigDir"/>
        </seealso>
      </element>
      <!-- function type Visibility: default -->
      <element name="TGetAppNameEvent">
        <short>Callback type to get customized application name.</short>
        <descr>This callback type is used by the <link id="OnGetApplicationName"/> to
return an alternative application name.
</descr>
        <errors/>
        <seealso/>
      </element>
      <!-- variable Visibility: default -->
      <element name="OnGetApplicationName">
        <short>Callback to get a customized application name.</short>
        <descr>
          <p>By default, the configuration file routines <link id="GetAppConfigDir"/> and
<link id="GetAppConfigFile"/> use a default application name to construct a
directory or filename. This callback can be used to provide an alternative
application name.
</p>
          <p>Since the result of this callback will be used to construct a filename, care 
should be taken that the returned name does not contain directory separator
characters or characters that cannot appear in a filename.
</p>
        </descr>
        <errors/>
        <seealso>
          <link id="TGetAppNameEvent"/>
          <link id="ApplicationName"/>
          <link id="GetAppConfigDir"/>
          <link id="GetAppConfigFile"/>
        </seealso>
      </element>
      <!-- pointer type Visibility: default -->
      <element name="PDayTable">
        <short>Pointer to TDayTable type.</short>
      </element>
      <!-- array type Visibility: default -->
      <element name="TDayTable">
        <short>Array of day names.</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="HoursPerDay">
        <short>Number of hours in a day.</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="MinsPerHour">
        <short>Number of minutes per hour.</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="SecsPerMin">
        <short>Number of seconds per minute</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="MSecsPerSec">
        <short>Number of milliseconds per second</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="MinsPerDay">
        <short>Number of minutes per day.</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="SecsPerDay">
        <short>Number of seconds per day</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="MSecsPerDay">
        <short>Number of milliseconds per day</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="DateDelta">
        <short>Days between 1/1/0001 and 12/31/1899</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="UnixDateDelta">
        <short>Number of days between 1.1.1900 and 1.1.1970</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="MonthDays">
        <short>Array with number of days in the months for leap and non-leap years.</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="TwoDigitYearCenturyWindow">
        <short>Window to determine what century 2 digit years are in.</short>
      </element>
      <!-- record type Visibility: default -->
      <element name="TSystemTime">
        <short>System time structure</short>
        <descr>The System time structure contains the date/time in a
human-understandable format.
</descr>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSystemTime.Year">
        <short>Year part</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSystemTime.Month">
        <short>Month part</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSystemTime.Day">
        <short>Day of month part</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSystemTime.Hour">
        <short>Hour of the day</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSystemTime.Minute">
        <short>Minute of the hour</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSystemTime.Second">
        <short>Second of the minute</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSystemTime.MilliSecond">
        <short>Milliseconds in the second</short>
      </element>
      <!-- record type Visibility: default -->
      <element name="TTimeStamp">
        <short>TimeStamp structure</short>
        <descr>
          <var>TTimeStamp</var> contains a timestamp, with the date and time parts
specified as separate <var>TDateTime</var> values.
</descr>
      </element>
      <!-- variable Visibility: default -->
      <element name="TTimeStamp.Time">
        <short>Time part</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TTimeStamp.Date">
        <short>Date part</short>
      </element>
      <!-- function Visibility: default -->
      <element name="TryEncodeDate">
        <short>Try to encode a date, and indicate success.</short>
        <descr>
          <var>TryEncodeDate</var> will check the validity of the <var>Year</var>,
<var>Month</var> and <var>Day</var> arguments, and if they are all valid,
then they will be encoded as a <var>TDateTime</var> value and returned in
<var>D</var>. The function will return <var>True</var> in this case. If an
inbvalid argument is passed, then <var>False</var> will be returned.
</descr>
        <errors>None. If an error occurs during the encoding, <var>False</var> is returned.
</errors>
        <seealso>
          <link id="EncodeDate"/>
          <link id="DecodeDateFully"/>
          <link id="DecodeDate"/>
          <link id="TryEncodeTime"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="TryEncodeTime">
        <short>Try to encode a time, and indicate success.</short>
        <descr>
          <var>TryEncodeTime</var> will check the validity of the <var>Hour</var>,
<var>Min</var>, <var>Sec</var> and <var>MSec</var> arguments, and will
encode them in a <var>TDateTime</var> value which is returned in
<var>T</var>. If the arguments are valid, then <var>True</var> is returned,
otherwise <var>False</var> is returned.
</descr>
        <errors>None. If an error occurs during the encoding, <var>False</var> is returned.
</errors>
        <seealso>
          <link id="EncodeTime"/>
          <link id="DecodeTime"/>
          <link id="TryEncodeDate"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="DecodeDateFully">
        <short>Decode a date with additional date of the week.</short>
        <descr>
          <var>DecodeDateFully</var>, like <link id="DecodeDate"/>, decodes 
<var>DateTime</var> in its parts and returns these in <var>Year</var>, 
<var>Month</var>, <var>Day</var> but in addition returns the day of 
the week in <var>DOW</var>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="EncodeDate"/>
          <link id="TryEncodeDate"/>
          <link id="DecodeDate"/>
        </seealso>
      </element>
      <!-- procedure Visibility: default -->
      <element name="GetLocalTime">
        <short>Get the local time.</short>
        <descr>
          <var>GetLocalTime</var> returns the system time in a <link id="TSystemTime"/>
format.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="Now"/>
          <link id="Date"/>
          <link id="Time"/>
          <link id="TSystemTime"/>
        </seealso>
      </element>
      <!-- pointer type Visibility: default -->
      <element name="PString">
        <short>Pointer to a ansistring</short>
      </element>
      <!-- enumeration type Visibility: default -->
      <element name="TFloatFormat">
        <short>Formats for the FloatToText function.</short>
        <descr>
          <var>TFloatFormat</var> is used to determine how a float value should be
formatted in the <link id="FloatToText"/> function.
</descr>
        <seealso>
          <link id="FloatToText"/>
          <link id="FloatToStrF"/>
        </seealso>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TFloatFormat.ffGeneral">
        <short>General number format.</short>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TFloatFormat.ffExponent">
        <short>Scientific format.</short>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TFloatFormat.ffFixed">
        <short>Fixed point format.</short>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TFloatFormat.ffNumber">
        <short>Fixed point format with thousand separatord</short>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TFloatFormat.ffCurrency">
        <short>Monetary format.</short>
      </element>
      <!-- enumeration type Visibility: default -->
      <element name="TFloatValue">
        <short>Type of float to return in the buffer for TextToFloat.</short>
        <descr>
          <var>TFloatValue</var> determines which kind of value should be returned in
the (untyped) buffer used by the <link id="TextToFloat"/> function.
</descr>
        <seealso>
          <link id="TextToFloat"/>
        </seealso>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TFloatValue.fvExtended">
        <short>Extended value</short>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TFloatValue.fvCurrency">
        <short>Currency value</short>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TFloatValue.fvSingle">
        <short>Single value</short>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TFloatValue.fvReal">
        <short>Real value</short>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TFloatValue.fvDouble">
        <short>Double value</short>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TFloatValue.fvComp">
        <short>Comp value</short>
      </element>
      <!-- set type Visibility: default -->
      <element name="TReplaceFlags">
        <short>Flags for StringReplace function</short>
        <descr>
          <var>TReplaceFlags</var> determines the behaviour of the 
<link id="StringReplace"/> function.
</descr>
        <seealso>
          <link id="StringReplace"/>.
</seealso>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TReplaceFlags.rfReplaceAll">
        <short>Replace all occurrences of the search string with the replacement string.</short>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TReplaceFlags.rfIgnoreCase">
        <short>Search case insensitive.</short>
      </element>
      <!-- record type Visibility: default -->
      <element name="TFloatRec">
        <short>Record descriing a float value</short>
        <descr>
          <var>TFloatRec</var> is used to descibe a floating point value by the
<link id="FloatToDecimal"/> function.
</descr>
        <seealso>
          <link id="FloatToDecimal"/>
        </seealso>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFloatRec.Exponent">
        <short>Exponent part</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFloatRec.Negative">
        <short>Sign part</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFloatRec.Digits">
        <short>Digits of fraction</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="MinDateTime">
        <short>Minimum <var>TDateTime</var> value.</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="MaxDateTime">
        <short>Maximum <var>TDateTime</var> value.</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="MinCurrency">
        <short>Minimum Currency value</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="MaxCurrency">
        <short>Maximum currency value</short>
      </element>
      <!-- enumeration type Visibility: default -->
      <element name="TTextLineBreakStyle">
        <short>Line break style</short>
        <descr>
          <var>TTextLineBreakStyle</var> describes the style of linebreaks to be used
in the <link id="AdjustLineBreaks"/> function.
</descr>
        <seealso>
          <link id="AdjustLineBreaks"/>
        </seealso>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TTextLineBreakStyle.tlbsLF">
        <short>Linefeed only</short>
      </element>
      <element name="TTextLineBreakStyle.tlbsCR">
        <short>Carriage-return only</short>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TTextLineBreakStyle.tlbsCRLF">
        <short>Carriage-return and linefeed characters</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="DefaultTextLineBreakStyle">
        <short>Default line break style for the current platform.</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="LeadBytes">
        <short>Lead bytes in Multi-Byte character sets</short>
        <descr>
          <var>LeadBytes</var> contains the set of bytes that serve as lead byte in a
MBCS string.
</descr>
      </element>
      <!-- constant Visibility: default -->
      <element name="EmptyStr">
        <short>Empty String Constant</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="NullStr">
        <short>Pointer to an empty string</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="EmptyWideStr">
        <short>Empty wide string.</short>
      </element>
      <!-- function Visibility: default -->
      <element name="CompareMemRange">
        <short>Compare 2 memory locations</short>
        <descr>
          <p>
            <var>CompareMemRange</var> compares the 2 memory locations pointed to by
<var>P1</var> and <var>P2</var> byte per byte. It stops comparing after
<var>Length</var> bytes have been compared, or when it has encountered 2
different bytes. The result is then
</p>
          <dl>
            <dt>&gt;0</dt>
            <dd>if a byte in range <var>P1</var> was found that is bigger than the
corresponding byte in range <var>P2</var>.</dd>
            <dt>0</dt>
            <dd>if all bytes in range <var>P1</var> are the same as the corresponding 
bytes in range <var>P2</var>.</dd>
            <dt>&lt;0</dt>
            <dd>if a byte in range <var>P1</var> was found that is less than the
corresponding byte in range <var>P2</var>.</dd>
          </dl>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="SameText"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="SameText">
        <short>Checks whether 2 strings are the same (case insensitive)</short>
        <descr>
          <var>SameText</var> calls <link id="CompareText"/> with <var>S1</var> and
<var>S2</var> as parameters and returns <var>True</var> if the result of
that call is zero, or <var>False</var> otherwise.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="CompareText"/>
          <link id="AnsiSameText"/>
          <link id="AnsiSameStr"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="AnsiSameText">
        <short>Checks whether 2 strings are the same (case insensitive)</short>
        <descr>
          <var>SameText</var> calls <link id="AnsiCompareText"/> with <var>S1</var> and
<var>S2</var> as parameters and returns <var>True</var> if the result of
that call is zero, or <var>False</var> otherwise.
</descr>
        <errors/>
        <seealso>
          <link id="AnsiCompareText"/>
          <link id="SameText"/>
          <link id="AnsiSameStr"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="AnsiSameStr">
        <short>Checks whether 2 strings are the same (case sensitive)</short>
        <descr>
          <p>
            <var>SameText</var> calls <link id="AnsiCompareStr"/> with <var>S1</var> and
<var>S2</var> as parameters and returns <var>True</var> if the result of
that call is zero, or <var>False</var> otherwise.
</p>
          <remark>A widestring manager must be installed in order for this function to work
correctly with various character sets.
</remark>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiCompareStr"/>
          <link id="SameText"/>
          <link id="AnsiSameText"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="AnsiStrLComp">
        <short>Compare a limited number of characters of 2 strings</short>
        <descr>
          <p>
            <var>AnsiStrLComp</var> functions the same as <link id="AnsiStrComp"/>, but
compares at most <var>MaxLen</var> characters. If the first <var>MaxLen</var> 
characters in both strings are the same, then zero is returned. 
</p>
          <p>Note that this function processes embedded null characters, treating them
as a normal character.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiStrComp"/>
          <link id="AnsiStrIComp"/>
          <link id="AnsiStrLIComp"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="TryStrToInt">
        <short>Try to convert a string to an integer, and report on success.</short>
        <descr>
          <var>TryStrToInt</var> tries to convert the string <var>S</var> to an
integer, and returns <var>True</var> if this was succesful. In that case the
converted integer is returned in <var>I</var>. If the conversion failed,
(an invalid string, or the value is out of range) then <var>False</var> is returned.
</descr>
        <errors>None. On error, <var>False</var> is returned.
</errors>
        <seealso>
          <link id="StrToInt"/>
          <link id="TryStrToInt64"/>
          <link id="StrToIntDef"/>
          <link id="StrToInt64"/>
          <link id="StrToInt64Def"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="StrToInt64">
        <short>Convert a string to an Int64 value.</short>
        <descr>
          <p>
            <var>StrToInt64</var> converts the string <var>S</var> to a Int64 value, and
returns this value. The string can only contain numerical characters, and
optionally a minus sign as the first character. Whitespace is not allowed.
</p>
          <p>Hexadecimal values (starting with the $ character) are supported.
</p>
        </descr>
        <errors>On error, a <link id="EConvertError"/> exception is raised.
</errors>
        <seealso>
          <link id="TryStrToInt64"/>
          <link id="StrToInt64Def"/>
          <link id="StrToInt"/>
          <link id="TryStrToInt"/>
          <link id="StrToIntDef"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="TryStrToInt64">
        <short>Try to convert a string to an int64 value, and report on success.</short>
        <descr>
          <p>
            <var>TryStrToInt64</var> tries to convert the string <var>S</var> to a Int64 value, and
returns this value in <var>I</var> if successful. If the conversion was
succesful, the function result is <var>True</var>, or <var>False</var>
otherwise.
The string can only contain numerical characters, and
optionally a minus sign as the first character. Whitespace is not allowed.
</p>
          <p>Hexadecimal values (starting with the $ character) are supported.
</p>
        </descr>
        <errors>None. On error, <var>False</var> is returned.
</errors>
        <seealso>
          <link id="StrToInt64"/>
          <link id="StrToInt64Def"/>
          <link id="StrToInt"/>
          <link id="TryStrToInt"/>
          <link id="StrToIntDef"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="StrToInt64Def">
        <short>Convert a string to an Int64 value, with a default value</short>
        <descr>
          <var>StrToInt64Def</var> tries to convert the string <var>S</var> to a Int64
value, and returns this value. If the conversion fails for some reason, the
value <var>Default</var> is returned instead.
</descr>
        <errors>None. On error, the <var>Default</var> value is returned.
</errors>
        <seealso>
          <link id="StrToInt64"/>
          <link id="TryStrToInt64"/>
          <link id="StrToInt"/>
          <link id="TryStrToInt"/>
          <link id="StrToIntDef"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="StrToFloatDef">
        <short>Convert a string to a float, with a default value.</short>
        <descr>
          <var>StrToFloatDef</var> tries to convert the string <var>S</var> to a
floating point value, and returns this value. If the conversion fails for
some reason, the value <var>Default</var> is returned instead.
</descr>
        <errors>None. On error, the <var>Default</var> value is returned.
</errors>
        <seealso/>
      </element>
      <!-- function Visibility: default -->
      <element name="FloatToDateTime">
        <short>Convert a float to a <var>TDateTime</var> value.</short>
        <descr>
          <var>FloatToDateTime</var> converts the <var>Value</var> floating point
value to a <var>TDateTime</var> value. It checks whether <var>Value</var> is
in the valid range of dates (determined by <link id="MinDateTime"/> and
<link id="MaxDateTime"/>). If not, an <link id="EConvertError"/> exception
is raised.
</descr>
        <errors>If <var>Value</var> is out of range, an <link id="EConvertError"/> exception
is raised.
</errors>
        <seealso>
          <link id="EConvertError"/>
          <link id="MinDateTime"/>
          <link id="MaxDateTime"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="FloattoCurr">
        <short>Convert a float to a Currency value.</short>
        <descr>
          <var>FloatToCurr</var> converts the <var>Value</var> floating point
value to a <var>Currency</var> value. It checks whether <var>Value</var> is
in the valid range of currencies (determined by <link id="MinCurrency"/> and
<link id="MaxCurrency"/>). If not, an <link id="EConvertError"/> exception
is raised.
</descr>
        <errors>If <var>Value</var> is out of range, an <link id="EConvertError"/> exception
is raised.
</errors>
        <seealso>
          <link id="EConvertError"/>
          <link id="TryFloatToCurr"/>
          <link id="MinCurrency"/>
          <link id="MaxCurrency"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="TryFloatToCurr">
        <short>Try to convert a float value to a currency value and report on success.</short>
        <descr>
          <var>TryFloatToCurr</var> tries convert the <var>Value</var> floating point
value to a <var>Currency</var> value. If successful, the function returns
<var>True</var> and the resulting currency value is returned in
<var>AResult</var>. It checks whether <var>Value</var> is
in the valid range of currencies (determined by <link id="MinCurrency"/> and
<link id="MaxCurrency"/>). If not, <var>False</var> is returned.
</descr>
        <errors>If <var>Value</var> is out of range, <var>False</var> is returned.
</errors>
        <seealso>
          <link id="FloatToCurr"/>
          <link id="MinCurrency"/>
          <link id="MaxCurrency"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="CurrToStr">
        <short>Convert a currency value to a string.</short>
        <descr>
          <p>
            <var>CurrToStr</var> will convert a currency value to a string with a
maximum of 15 digits, and precision 2. Calling <var>CurrToStr</var> 
is equivalent to calling <link id="FloatToStrF"/>:
</p>
          <code>FloatToStrF(Value,ffNumber,15,2);
</code>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="FloatToStrF"/>
          <link id="StrToCurr"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="StrToCurr">
        <short>Convert a string to a currency value</short>
        <descr>
          <var>StrToCurr</var> converts a string to a currency value and returns the
value. The string
should contain a valid currency amount, without currency symbol. If the
conversion fails, an <link id="EConvertError"/> exception is raised.
</descr>
        <errors>On error, an <link id="EConvertError"/> exception is raised.
</errors>
        <seealso>
          <link id="CurrToStr"/>
          <link id="StrToCurrDef"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="StrToCurrDef">
        <short>Convert a string to a currency value, using a default value</short>
        <descr>
          <var>StrToCurrDef</var> converts a string to a currency value and returns the
value. The string should contain a valid currency amount, without currency 
symbol. If the conversion fails, the fallback <var>Default</var> value is returned.
</descr>
        <errors>On error, the <var>Default</var> value is returned.
</errors>
        <seealso>
          <link id="CurrToStr"/>
          <link id="StrToCurr"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="StrToBool">
        <short>Convert a string to a boolean value</short>
        <descr>
          <var>StrToBool</var> will convert the string <var>S</var> to a boolean
value. The string <var>S</var> can contain one of <var>'True'</var>,
<var>'False'</var> (case is ignored) or a numerical value. If it contains a
numerical value, 0 is converted to <var>False</var>, all other values result
in <var>True</var>. If the string <var>S</var> contains no valid boolean,
then  an <link id="EConvertError"/> exception is raised.
</descr>
        <errors>On error, an <link id="EConvertError"/> exception is raised.
</errors>
        <seealso>
          <link id="BoolToStr"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="BoolToStr">
        <short>Convert a boolean value to a string.</short>
        <descr>
          <var>BoolToStr</var> converts the boolean <var>B</var> to one of
the strings <var>'TRUE'</var> or <var>'FALSE'</var>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrToBool"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="StringReplace">
        <short>Replace occurrences of one substring with another in a string.</short>
        <descr>
          <var>StringReplace</var> searches the string <var>S</var> for
occurrences of the string <var>OldPattern</var> and, if it is found,
replaces it with <var>NewPattern</var>. It returns the resulting string. The
behaviour of <var>StringReplace</var> can be runed with <var>Flags</var>,
which is of type <link id="TReplaceFlags"/>. Standard behaviour is to
replace only the first occurrence of <var>OldPattern</var>, and to search
case sensitively.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="TReplaceFlags"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="FloatToTextFmt">
        <short>Convert a float value to a string using a given mask.</short>
        <descr>
          <p>
            <var>FloatToTextFmt</var> returns a textual representation of
<var>Value</var> in the memory location pointed to by <var>Buffer</var>. it
uses the formatting specification in <var>Format</var> to do this. The
return value is the number of characters that were written in the buffer.
</p>
          <p>For a list of valid formatting characters, see <link id="FormatFloat"/>
          </p>
        </descr>
        <errors>No length checking is performed on the buffer. The buffer should point to
enough memory to hold the complete string. If this is not the case, an
access violation may occur.
</errors>
        <seealso>
          <link id="FormatFloat"/>
        </seealso>
      </element>
      <!-- procedure Visibility: default -->
      <element name="FloatToDecimal">
        <short>Convert a float value to a <var>TFloatRec</var> value.</short>
        <descr>
          <var>FloatToDecimal</var> converts the float <var>Value</var> to a
float description in the <var>Result</var>
          <link id="TFloatRec"/> format.
It will store <var>Precision</var> digits in the <var>Digits</var> field, of
which at most <var>Decimal</var> decimals.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="TFloatRec"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="IsDelimiter">
        <short>Check whether a given string is a delimiter character.</short>
        <descr>
          <var>IsDelimiter</var> checks whether the <var>Index</var>-th character in the
string <var>S</var> is a delimiter character as passed in
<var>Delimiters</var>. If <var>Index</var> is out of range, <var>False</var>
is returned.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="LastDelimiter"/>
        </seealso>
      </element>
      <!-- enumeration type Visibility: default -->
      <element name="TMbcsByteType">
        <short>Type of multi-byte character set.</short>
        <descr/>
        <errors/>
        <seealso/>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TMbcsByteType.mbSingleByte">
        <short>Single bytes</short>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TMbcsByteType.mbLeadByte">
        <short>Uses lead-byte</short>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TMbcsByteType.mbTrailByte">
        <short>Uses trailing byte</short>
      </element>
      <!-- function Visibility: default -->
      <element name="ByteType">
        <short>Return the type of byte in an ansistring for a multi-byte character set</short>
        <descr>
          <var>ByteType</var> returns the type of byte in the ansistring <var>S</var>
at (1-based) position <var>Index</var>. 
</descr>
        <errors>No checking on the index is performed.
</errors>
        <seealso>
          <link id="TMbcsByteType"/>
          <link id="StrByteType"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="StrByteType">
        <short>Return the type of byte in a null-terminated string for a multi-byte character set</short>
        <descr>
          <var>StrByteType</var> returns the type of byte in the null-terminated
string <var>Str</var> at (0-based) position <var>Index</var>. 
</descr>
        <errors>No checking on the index is performed.
</errors>
        <seealso>
          <link id="TMbcsByteType"/>
          <link id="ByteType"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="ByteToCharLen">
        <short>Convert a length in bytes to a length in characters.</short>
        <descr>
          <var>ByteToCharLen</var> returns the number of bytes in <var>S</var>, but
limits the result to <var>MaxLen</var>
        </descr>
        <errors>This function does not take into account MBCS yet.
</errors>
        <seealso>
          <link id="CharToByteLen"/>
          <link id="ByteToCharIndex"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="CharToByteLen">
        <short>Convert a length in characters to a length in bytes.</short>
        <descr>
          <var>CharToByteLen</var> returns the number of bytes in <var>S</var>, but
limits the result to <var>MaxLen</var>
        </descr>
        <errors>This function does not take into account MBCS yet.
</errors>
        <seealso>
          <link id="ByteToCharLen"/>
          <link id="ByteToCharIndex"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="ByteToCharIndex">
        <short>Convert a character index in Bytes to an Index in characters</short>
        <descr>
          <var>ByteToCharIndex</var> returns the index (in characters) of the
<var>Index</var>-th byte in <var>S</var>.
</descr>
        <errors>This function does not take into account MBCS yet.
</errors>
        <seealso>
          <link id="CharToByteLen"/>
          <link id="ByteToCharLen"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="SwitchChars">
        <short>Characters which start a command-line switch</short>
        <descr>The characters in this set will be used by the <link id="FindCmdLineSwitch"/> 
function to determine whether a command-line
argument is a switch (an option) or a value. If the first character of an
argument is in <var>SwitchChars</var>, it will be considered an option or
switch.
</descr>
        <errors/>
        <seealso>
          <link id="FindCmdLineSwitch"/>
        </seealso>
      </element>
      <!-- set type Visibility: default -->
      <element name="TSysCharSet">
        <short>Set of characters.</short>
        <descr>Generic set of characters type.
</descr>
        <errors/>
        <seealso/>
      </element>
      <!-- function Visibility: default -->
      <element name="FindCmdLineSwitch">
        <short>Check whether a certain switch is present on the command-line.</short>
        <descr>
          <var>FindCmdLineSwitch</var> will check all command-line arguments for the
presence of the option <var>Switch</var>. It will return <var>True</var> if
it was found, <var>False</var> otherwise. Characters that appear in
<var>Chars</var> (default is <link id="SwitchChars"/>) are assumed to
indicate an option (switch). If the parameter <var>IgnoreCase</var> is
<var>True</var>, case will be ignored when looking for the switch. Default
is to search case sensitive.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="SwitchChars"/>
        </seealso>
      </element>
      <!-- alias type Visibility: default -->
      <element name="THandle">
        <short>File Handle type.</short>
        <descr>
          <var>THandle</var> refers to the definition of <var>THandle</var> in the
system unit, and is provided for backward compatibility only.
</descr>
      </element>
      <!-- procedure type Visibility: default -->
      <element name="TProcedure">
        <short>Procedural type</short>
        <descr>
          <var>TProcedure</var> is a general definition of a procedural callback.
</descr>
      </element>
      <!-- alias type Visibility: default -->
      <element name="TFileName">
        <short>Filename type</short>
        <descr>
          <var>TFileName</var> is used in the <link id="TSearchRec"/> definition.
</descr>
        <seealso>
          <link id="TSearchRec"/>
        </seealso>
      </element>
      <!-- set type Visibility: default -->
      <element name="TIntegerSet">
        <short>Set with size of integer.</short>
        <descr>
          <var>TIntegerSet</var> is a generic integer subrange set definition whose
size fits in a single integer.
</descr>
      </element>
      <!-- record type Visibility: default -->
      <element name="LongRec">
        <short>Record describing a longint value</short>
        <descr>
          <var>LongRec</var> can be used to extract the parts of an long Integer: the
high and low word, or the 4 separate bytes as a zero-based array of bytes.
Note that the meaning of High and Low parts are different on various CPUs.
</descr>
        <seealso>
          <link id="WordRec"/>
          <link id="Int64Rec"/>
        </seealso>
      </element>
      <!-- record type Visibility: default -->
      <element name="WordRec">
        <short>Record describing a word value.</short>
        <descr>
          <var>LongRec</var> can be used to extract the parts of a word: the
high and low byte. Note that the meaning of the High and Low parts
are different on various CPUs.
</descr>
        <seealso>
          <link id="LongRec"/>
          <link id="Int64Rec"/>
        </seealso>
      </element>
      <!-- variable Visibility: default -->
      <element name="WordRec.Lo">
        <short>Low byte of the word.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="WordRec.Hi">
        <short>High byte of the word</short>
      </element>
      <!-- record type Visibility: default -->
      <element name="Int64Rec">
        <short>Record describing an Int64 value</short>
        <descr>
          <var>Int64Rec</var> can be used to extract the parts of a Int64: the
high and low cardinal, or a zero-based array of 4 words, or a zero based
array of 8 bytes. Note that the meaning of the High and Low parts
are different on various CPUs.
</descr>
        <seealso>
          <link id="LongRec"/>
          <link id="WordRec"/>
        </seealso>
      </element>
      <!-- pointer type Visibility: default -->
      <element name="PByteArray">
        <short>Pointer to an array of byte.</short>
        <descr>Generic pointer to <link id="TByteArray"/>. Use to access memory regions as
a byte array.
</descr>
        <seealso>
          <link id="TByteArray"/>
          <link id="PWordArray"/>
          <link id="TWordArray"/>
        </seealso>
      </element>
      <!-- array type Visibility: default -->
      <element name="TByteArray">
        <short>Array of bytes</short>
        <descr>
          <var>TByteArray</var> is a generic array definition, mostly for use as a
base type of the <link id="PByteArray"/> type.
</descr>
        <seealso>
          <link id="PByteArray"/>
          <link id="PWordArray"/>
          <link id="TWordArray"/>
        </seealso>
      </element>
      <!-- pointer type Visibility: default -->
      <element name="PWordArray">
        <short>Pointer to an array of word.</short>
        <descr>Generic pointer to <link id="TWordArray"/>. Use to access memory regions as
a word array.
</descr>
        <seealso>
          <link id="TWordArray"/>
          <link id="PByteArray"/>
          <link id="TByteArray"/>
        </seealso>
      </element>
      <!-- array type Visibility: default -->
      <element name="TWordArray">
        <short/>
        <descr>
          <var>TWordArray</var> is a generic array definition, mostly for use as a
base type of the <link id="PWordArray"/> type.
</descr>
        <errors/>
        <seealso>
          <link id="PWordArray"/>
          <link id="PByteArray"/>
          <link id="TByteArray"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="Exception">
        <short>Base class of all exceptions.</short>
        <descr>
          <var>Exception</var> is the base class for all exception handling routines
in the RTL and FCL. While it is possible to raise an exception with any
class descending from <var>TObject</var>, it is recommended to use
<var>Exception</var> as the basis of exception class objects:
the <var>Exception</var> class introduces properties to associate a message
and a help context with the exception being raised. What is more, the
<file>SysUtils</file> unit sets the necessary hooks to catch and display
unhandled exceptions: in such cases, the message displayed to the end user, 
will be the message stored in the exception class.
</descr>
        <seealso>
          <link id="ExceptObject"/>
          <link id="ExceptAddr"/>
          <link id="ExceptionErrorMessage"/>
          <link id="ShowException"/>
          <link id="Abort"/>
        </seealso>
      </element>
      <!-- constructor Visibility: public -->
      <element name="Exception.Create">
        <short>Constructs a new exception object with a given message.</short>
        <var>Create</var> allocates a new exception object on the heap, and stores
<var>Msg</var> in the <link id="Exception.Message">Message</link> property.
<errors>Construction may fail if there is not enough memory on the heap.
</errors>
        <seealso>
          <link id="Exception.CreateFmt"/>
          <link id="Exception.Message"/>
        </seealso>
      </element>
      <!-- constructor Visibility: public -->
      <element name="Exception.CreateFmt">
        <short>Constructs a new exception object and formats a new message.</short>
        <p>
          <var>CreateFmt</var> allocates a new exception object on the heap, and
fills the  <link id="Exception.Message">Message</link> property with the result of a call to <link id="Format"/> with <var>Msg</var> and <var>Args</var> as arguments.
</p>
        <p>Using <var>CreateFmt</var> is equivalent to using the following code:</p>
        <code>Exception.Create(Format(Msg,Args));
</code>
        <errors>Construction may fail if there is not enough memory on the heap.
</errors>
        <seealso>
          <link id="Exception.Create"/>
          <link id="Exception.Message"/>
          <link id="Format"/>
        </seealso>
      </element>
      <!-- constructor Visibility: public -->
      <element name="Exception.CreateRes">
        <short>Constructs a new exception object and gets the message from a resource.</short>
        <p>
          <var>CreateRes</var> allocates a new exception object on the heap, and stores
fetches the resource string <var>ResString</var> from the resources and
stores it in the <link id="Exception.Message">Message</link> property.
</p>
        <remark>Resources are not yet implemented in Free Pascal.
</remark>
        <errors>Construction may fail if there is not enough memory on the heap.
</errors>
        <seealso>
          <link id="Exception.Create"/>
          <link id="Exception.CreateFmt"/>
          <link id="Exception.CreateResFmt"/>
          <link id="Exception.Message"/>
        </seealso>
      </element>
      <!-- constructor Visibility: public -->
      <element name="Exception.CreateResFmt">
        <short>Constructs a new exception object and formats the message from a
reasource.</short>
        <descr>
          <var>CreateResFmt</var> does the same as <link id="Exception.CreateFmt">CreateFmt</link>, but fetches
the message from the resource string <var>ResString</var>.
</descr>
        <errors>Construction may fail if there is not enough memory on the heap.
</errors>
        <seealso>
          <link id="Exception.Create"/>
          <link id="Exception.CreateFmt"/>
          <link id="Exception.CreateRes"/>
          <link id="Exception.Message"/>
        </seealso>
      </element>
      <!-- constructor Visibility: public -->
      <element name="Exception.CreateHelp">
        <short>Constructs a new exception object and sets the help context.</short>
        <descr>
          <var>CreateHelp</var> does the same as the <link id="Exception.Create">Create</link> constructor,
but additionally stores <var>AHelpContext</var> in the <link id="Exception.HelpContext">HelpContext</link> property.
</descr>
        <seealso>
          <link id="Exception.Create"/>
        </seealso>
      </element>
      <!-- constructor Visibility: public -->
      <element name="Exception.CreateFmtHelp">
        <short>Constructs a new exception object and sets the help context and
formats the message</short>
        <descr>
          <var>CreateFmtHelp</var> does the same as the <link id="Exception.CreateFmt">CreateFmt</link> constructor,
but additionally stores <var>AHelpContext</var> in the <link id="Exception.HelpContext">HelpContext</link> property.
</descr>
        <seealso>
          <link id="Exception.CreateFmt"/>
        </seealso>
      </element>
      <!-- constructor Visibility: public -->
      <element name="Exception.CreateResHelp">
        <short>Constructs a new exception object and sets the help context and
gets the message from a resource</short>
        <descr>
          <var>CreateResHelp</var> does the same as the <link id="Exception.CreateRes">CreateRes</link> constructor,
but additionally stores <var>AHelpContext</var> in the <link id="Exception.HelpContext">HelpContext</link> property.
</descr>
        <seealso>
          <link id="Exception.CreateRes"/>
        </seealso>
      </element>
      <!-- constructor Visibility: public -->
      <element name="Exception.CreateResFmtHelp">
        <short>Constructs a new exception object and sets the help context and
formats the message from a resource</short>
        <descr>
          <var>CreateResFmtHelp</var> does the same as the <link id="Exception.CreateResFmt">CreateResFmt</link> constructor,
but additionally stores <var>AHelpContext</var> in the <link id="Exception.HelpContext">HelpContext</link> property.
</descr>
        <seealso>
          <link id="Exception.CreateResFmt"/>
        </seealso>
      </element>
      <!-- property Visibility: public -->
      <element name="Exception.helpcontext">
        <short>Help context associated with the exception.</short>
        <descr>
          <var>HelpContext</var> is the help context associated with the exception,
and can be used to provide context-sensitive help when the exception error
message is displayed. It should be set in the exception constructor.
</descr>
        <seealso>
          <link id="Exception.CreateHelp"/>
          <link id="Exception.Message"/>
        </seealso>
      </element>
      <!-- property Visibility: public -->
      <element name="Exception.message">
        <short>Message associated with the exception.</short>
        <descr>
          <var>Message</var> provides additional information about the exception. It
is shown to the user in e.g. the <link id="ShowException"/> routine, and
should be set in the constructor when the exception is raised.
</descr>
        <seealso>
          <link id="Exception.Create"/>
          <link id="Exception.HelpContext"/>
        </seealso>
      </element>
      <!-- "class of" type Visibility: default -->
      <element name="ExceptClass">
        <short>Exception Class reference</short>
        <descr>
          <var>ExceptClass</var> is a <link id="Exception"/> class reference.
</descr>
        <seealso>
          <link id="Exception"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EExternal">
        <short>External Exception.</short>
        <descr>
          <var>EExternal</var> is the base exception for all external exceptions, as
reported by the CPU or operating system, as opposed to internal exceptions,
which are raised by the program itself. The <file>SysUtils</file> unit
converts all operating system errors to descendents of <var>EExternal</var>.
</descr>
        <seealso>
          <link id="EInterror"/>
          <link id="EExternal"/>
          <link id="EMathError"/>
          <link id="EExternalException"/>
          <link id="EAccessViolation"/>
          <link id="EPrivilege"/>
          <link id="EStackOverflow"/>
          <link id="EControlC"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EIntError">
        <short>Integer operation error.</short>
        <descr>
          <var>EInterror</var> is used when the operating system or CPU signals an
integer operation error, e.g.,  an overflow.
</descr>
      </element>
      <!-- object Visibility: default -->
      <element name="EDivByZero">
        <short>Division by zero error.</short>
        <descr>
          <var>EDivByZero</var> is used when the operating system or CPU signals a
division by zero error.
</descr>
        <link id="EIntError"/>
        <link id="ERangeError"/>
        <link id="EIntOverflow"/>
      </element>
      <!-- object Visibility: default -->
      <element name="ERangeError">
        <short>Range check error.</short>
        <descr>
          <var>ERangeError</var> is raised by the Free Pascal runtime library if
range checking is on, and a range check error occurs.
</descr>
        <seealso>
          <link id="EIntError"/>
          <link id="EDivByZero"/>
          <link id="EIntOverflow"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EIntOverflow">
        <short>Integer overflow error.</short>
        <descr>
          <var>EIntOverflow</var> is used when the operating system or CPU signals a
integer overflow error.
</descr>
        <seealso>
          <link id="EIntError"/>
          <link id="EDivByZero"/>
          <link id="ERangeError"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EMathError">
        <short>Mathematical error</short>
        <descr>
          <var>EMathError</var> is used when the operating system or CPU signals a
floating point overflow error.
</descr>
        <seealso>
          <link id="EIntError"/>
          <link id="EIntOverflow"/>
          <link id="EDivByZero"/>
          <link id="ERangeError"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EInvalidOp">
        <short>Invalid operation.</short>
        <descr>
          <var>EInvalidOp</var> is raised when an invalid operation is encountered.
</descr>
      </element>
      <!-- object Visibility: default -->
      <element name="EZeroDivide">
        <short>Division by zero error.</short>
        <descr>
          <var>EZeroDivide</var> occurs when a float division by zero occurs.
</descr>
        <seealso>
          <link id="EIntError"/>
          <link id="EIntOverflow"/>
          <link id="EDivByZero"/>
          <link id="ERangeError"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EOverflow">
        <short>Float overflow error.</short>
        <descr>
          <var>EOverflow</var> occurs when a float operation overflows. (i.e. result
is too big to represent).
</descr>
        <seealso>
          <link id="EIntError"/>
          <link id="EIntOverflow"/>
          <link id="EDivByZero"/>
          <link id="ERangeError"/>
          <link id="EUnderFlow"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EUnderflow">
        <short>Float underflow error</short>
        <descr>
          <var>EOverflow</var> occurs when a float operation underflows (i.e. result
is too small to represent).
</descr>
        <seealso>
          <link id="EIntError"/>
          <link id="EIntOverflow"/>
          <link id="EDivByZero"/>
          <link id="ERangeError"/>
          <link id="EOverFlow"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EInOutError">
        <short>Input/Output error</short>
        <descr>
          <var>EInOutError</var> is raised when a IO routine of Free Pascal returns an
error. The error is converted to an <var>EInOutError</var> only if the
input/output checking feature of FPC is turned on. The error code of the
input/output operation is returned in <link id="EInOutError.ErrorCode">ErrorCode</link>.
</descr>
        <seealso>
          <link id="EInOutError.ErrorCode"/>
        </seealso>
      </element>
      <!-- variable Visibility: public -->
      <element name="EInOutError.ErrorCode">
        <short>Error code for Input/Output operation.</short>
        <descr>
          <var>ErrorCode</var> contains the error code from the I/O operation which
raised the <link id="EInoutError"/> exception. An explanation of the error
codes can be found in the user's manual.
</descr>
      </element>
      <!-- object Visibility: default -->
      <element name="EHeapMemoryError">
        <short>Heap memory error</short>
        <descr>
          <var>EHeapMemoryError</var> is raised when an error occurs in heap
(dynamically allocated) memory.
</descr>
        <seealso>
          <link id="EHeapException"/>
          <link id="EoutOfMemory"/>
          <link id="EInvalidPointer"/>
        </seealso>
      </element>
      <!-- alias type Visibility: default -->
      <element name="EHeapException">
        <short>Heap exception</short>
        <descr>
          <var>EHeapMemoryError</var> is raised when an error occurs in the heap
management routines.
</descr>
        <seealso>
          <link id="EHeapMemoryError"/>
          <link id="EoutOfMemory"/>
          <link id="EInvalidPointer"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EExternalException">
        <short>External exception</short>
        <descr>
          <var>EExternalException</var> is raised when an external routine raises an
exception.
</descr>
        <seealso>
          <link id="EExternal"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EInvalidPointer">
        <short>Invalid pointer operation</short>
        <descr>
          <var>EInvalidPointer</var> is raised when an invalid heap pointer is used.
</descr>
        <seealso>
          <link id="EHeapException"/>
          <link id="EHeapMemoryError"/>
          <link id="EOutOfMemory"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EOutOfMemory">
        <short>Out of memory error.</short>
        <descr>
          <var>EOutOfMemory</var> occurs when memory can no longer be allocated on the
heap. An instance of <var>EOutOfMemory</var> is allocated on the heap at
program startup, so it is available when needed.
</descr>
        <seealso>
          <link id="EHeapException"/>
          <link id="EHeapMemoryError"/>
          <link id="EInvalidPointer"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EInvalidCast">
        <short>Invalid typecast error.</short>
        <descr>
          <var>EInvalidCast</var> is raised when an invalid typecast error (using the
<var>as</var> operator) is encountered.
</descr>
        <seealso>
          <link id="EIntfCastError"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EVariantError">
        <short>Variant error.</short>
        <descr>
          <var>EVariantError</var> is raised by the internal variant routines.
</descr>
      </element>
      <element name="EVariantError.ErrCode">
        <short>Variant error code.</short>
        <descr>
          <var>ErrCode</var> is the error code describing the actual error.
</descr>
      </element>
      <element name="EVariantError.CreateCode">
        <short>Create an instance of <var>EVariantError</var> with a particular error code.</short>
        <descr>
          <var>CreateCode</var> calls the inherited constructor, and sets the <link id="EVariantError.ErrCode">ErrCode</link> property to <var>Code</var>.
</descr>
        <seealso>
          <link id="EVariantError.ErrCode">ErrCode</link>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EAccessViolation">
        <short>Access Violation error</short>
        <descr>
          <var>EAccessViolation</var> is raised when the OS reports an Access
Violation, i.e. when invalid memory is accessed.
</descr>
      </element>
      <!-- object Visibility: default -->
      <element name="EPrivilege">
        <short>Privileged instruction error.</short>
        <descr>
          <var>EPrivilege</var> is raised when the OS reports that an invalid
instruction was executed.
</descr>
      </element>
      <!-- object Visibility: default -->
      <element name="EStackOverflow">
        <short>Stack overflow error.</short>
        <descr>
          <var>EStackOverflow</var> occurs when the stack has grown too big (e.g. by
infinite recursion).
</descr>
      </element>
      <!-- object Visibility: default -->
      <element name="EControlC">
        <short>Control-C (abort) was pressed on the console.</short>
        <descr>
          <var>EControlC</var> is raised when the user has pressed CTRL-C in a
console application.
</descr>
      </element>
      <!-- object Visibility: default -->
      <element name="EConvertError">
        <short>Conversion error.</short>
        <descr>
          <var>EConvertError</var> is raised by the various conversion routines in the
<file>SysUtils</file> unit. The message will contain more specific error
information.
</descr>
      </element>
      <!-- object Visibility: default -->
      <element name="EAbort">
        <short>Abort error.</short>
        <descr>
          <var>Abort</var> is raised by the <link id="Abort"/> procedure. It is not
displayed in GUI applications, and serves only to immediatly abort the current
procedure, and return control to the main program loop. 
</descr>
        <seealso>
          <link id="Abort"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EAbstractError">
        <short>Abstract error.</short>
        <descr>
          <var>EAbstractError</var> is raised when an abstract error occurs, i.e. when
an unimplemented abstract method is called.
</descr>
      </element>
      <!-- object Visibility: default -->
      <element name="EAssertionFailed">
        <short>Assertion failed error.</short>
        <descr>
          <var>EAssertionFailed</var> is raised when an application that is compiled
with assertions, encounters an invalid assertion. 
</descr>
        <errors/>
        <seealso/>
      </element>
      <!-- object Visibility: default -->
      <element name="EPropReadOnly">
        <short>Read-only property error.</short>
        <descr>
          <var>EPropReadOnly</var> is raised when an attempt is made to write to a
read-only property.
</descr>
        <link id="EPropWriteOnly"/>
      </element>
      <!-- object Visibility: default -->
      <element name="EPropWriteOnly">
        <short>Write-only property error.</short>
        <descr>
          <var>EPropWriteOnly</var> is raised when an attempt is made to read from a
write-only property.
</descr>
        <seealso>
          <link id="EPropReadOnly"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EIntfCastError">
        <short>Invalid interface cast error.</short>
        <descr>
          <var>EIntfCastError</var> is raised when an invalid interface cast is
encountered.
</descr>
        <seealso>
          <link id="EInvalidCast"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="EInvalidContainer">
        <short>Invalid container error.</short>
        <descr>
          <var>EInvalidContainer</var> is not yet used by Free Pascal, and is provided
for Delphi compatibility only.
</descr>
      </element>
      <!-- object Visibility: default -->
      <element name="EInvalidInsert">
        <short>Invalid insert error.</short>
        <descr>
          <var>EInvalidInsert</var> is not yet used by Free Pascal, and is provided
for Delphi compatibility only.
</descr>
      </element>
      <!-- object Visibility: default -->
      <element name="EPackageError">
        <short>Package error.</short>
        <descr>
          <var>EPackageError</var> is not yet used by Free Pascal, and is provided
for Delphi compatibility only.
</descr>
      </element>
      <!-- object Visibility: default -->
      <element name="EOSError">
        <short>Operating system error.</short>
        <descr>
          <var>EOSError</var> is raised when some Operating System call fails. The
<link id="EOSError.ErrorCode">ErrorCode</link> property contains the
operating system error code.
</descr>
        <seealso>
          <link id="EOSError.ErrorCode"/>
        </seealso>
      </element>
      <!-- variable Visibility: public -->
      <element name="EOSError.ErrorCode">
        <short>Operating system error code.</short>
        <descr>
          <var>ErrorCode</var> contains the error code reported by the operating
system for the call which caused the <link id="EOSError"/> to be raised.
</descr>
        <seealso>
          <link id="EOSError"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="ESafecallException">
        <short>SafeCall exception.</short>
        <descr>
          <var>ESafecallException</var> is not yet used by Free Pascal, and is provided
for Delphi compatibility only.
</descr>
      </element>
      <!-- object Visibility: default -->
      <element name="ENoThreadSupport">
        <short>No Thread support error.</short>
        <descr>
          <var>ENoThreadSupport</var> is raised when some thread routines are invoked,
and thread support was not enabled when the program was compiled. 
</descr>
      </element>
      <!-- function Visibility: default -->
      <element name="ExceptObject">
        <short>Current Exception object.</short>
        <descr>
          <var>ExceptObject</var> returns the currently treated exception object when
an exception is raised, and the stack is unwound.
</descr>
        <errors>If there is no exception, the function returns <var>Nil</var>
        </errors>
        <seealso>
          <link id="ExceptAddr"/>
          <link id="ExceptionErrorMessage"/>
          <link id="ShowException"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="ExceptAddr">
        <short>Current exception address.</short>
        <descr>
          <var>ExceptAddr</var> returns the address from the currently treated
exception object when an exception is raised, and the stack is unwound.
</descr>
        <seealso>
          <link id="ExceptObject"/>
          <link id="ExceptionErrorMessage"/>
          <link id="ShowException"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="ExceptionErrorMessage">
        <short>Return a message describing the exception.</short>
        <descr>
          <p>
            <var>ExceptionErrorMessage</var> creates a string that describes the
exception object <var>ExceptObject</var> at address <var>ExceptAddr</var>.
It can be used to display exception messages. The string will be stored in
the memory pointed to by <var>Buffer</var>, and will at most have
<var>Size</var> characters.
</p>
          <p>The routine checks whether <var>ExceptObject</var> is a <link id="Exception"/> object or not, and adapts the output accordingly.
</p>
        </descr>
        <seealso>
          <link id="ExceptObject"/>
          <link id="ExceptAddr"/>
          <link id="ShowException"/>
        </seealso>
      </element>
      <!-- procedure Visibility: default -->
      <element name="ShowException">
        <short>Show the current exception to the user.</short>
        <descr>
          <p>
            <var>ShowException</var> shows a message stating that a <var>ExceptObject</var>
was raised at address <var>ExceptAddr</var>. It uses <link id="ExceptionErrorMessage"/> to create the message, and is aware of the fact
whether the application is a console application or a GUI application. For a
console application, the message is written to standard error output. For a
GUI application, <link id="OnShowException"/> is executed.
</p>
        </descr>
        <errors>
          <p>If, for a GUI application, <link id="OnShowException"/> is not set, no
message will be displayed to the user.
</p>
          <p>The exception message can be at most 255 characters long: It is possible
that no memory can be allocated on the heap, so ansistrings are not
available, so a shortstring is used to display the message.
</p>
        </errors>
        <seealso>
          <link id="ExceptObject"/>
          <link id="ExceptAddr"/>
          <link id="ExceptionErrorMessage"/>
        </seealso>
      </element>
      <!-- procedure Visibility: default -->
      <element name="Abort">
        <short>Abort program execution.</short>
        <descr>
          <var>Abort</var> raises an <link id="EAbort"/> exception.
</descr>
        <seealso>
          <link id="Abort"/>
        </seealso>
      </element>
      <!-- procedure Visibility: default -->
      <element name="OutOfMemoryError">
        <short>Raise an <var>EOutOfMemory</var> exception</short>
        <descr>
          <var>OutOfMemoryError</var> raises an <link id="EOutOfMemory"/> exception,
with an exception object that has been allocated on the heap at program
startup. The program should neved create an <link id="EOutOfMemory"/>
exception, but always call this routine.
</descr>
        <seealso>
          <link id="EOutOfMemory"/>
        </seealso>
      </element>
      <!-- procedure Visibility: default -->
      <element name="Beep">
        <short>Sound the system bell.</short>
        <descr>
          <var>Beep</var> sounds the system bell, if one is available.
</descr>
        <errors>This routine may not be implemented on all platforms.
</errors>
      </element>
      <!-- function Visibility: default -->
      <element name="SysErrorMessage">
        <short>Format a system error message.</short>
        <descr>
          <var>SysErrorMessage</var> returns a string that describes the operating
system error code <var>ErrorCode</var>.
</descr>
        <errors>This routine may not be implemented on all platforms.
</errors>
        <seealso>
          <link id="EOSError"/>
        </seealso>
      </element>
      <!-- function type Visibility: default -->
      <element name="TTerminateProc">
        <short>Terminate procedure procedural variable.</short>
        <descr>
          <var>TTerminateProc</var> is the procedural type which should be used when
adding exit procedures. 
</descr>
        <seealso>
          <link id="AddTerminateProc"/>
        </seealso>
      </element>
      <!-- procedure Visibility: default -->
      <element name="AddTerminateProc">
        <short>Add a procedure to the exit chain.</short>
        <descr>
          <var>AddTerminateProc</var> adds <var>TermProc</var> to the list of exit
procedures. When the program exits, the list of exit procedures is run over,
and all procedures are called one by one, in the reverse order that they
were added to the exit chain.
</descr>
        <errors>If no memory is available on the heap, an exception may be raised.
</errors>
        <seealso>
          <link id="TTerminateProc"/>
          <link id="CallTerminateProcs"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="CallTerminateProcs">
        <short>Call the exit chain procedures.</short>
        <descr>
          <var>CallTerminateProcs</var> is run on program exit. It executes all
terminate procedures that were added to the exit chain with <link id="AddTerminateProc"/>, and does this in reverse order. 
</descr>
        <errors>If one of the exit procedure raises an exception, it is <em>not</em> caught, 
and the remaining exit procedures will not be executed.
</errors>
        <seealso>
          <link id="TTerminateProc"/>
          <link id="AddTerminateProc"/>
        </seealso>
      </element>
      <!-- variable Visibility: default -->
      <element name="OnShowException">
        <short>Callback to show unhandled exceptions.</short>
        <descr>
          <var>OnShowException</var> is the callback that <link id="ShowException"/>
uses to display a message in a GUI application. For GUI applications, this
variable should always be set. Note that no memory may be available when
this callback is called, so the callback should already have all resources 
it needs, when the callback is set.
</descr>
        <seealso>
          <link id="ShowException"/>
          <link id="ExceptionErrorMessage"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="filerecnamelength">
        <short>Length of filerec filename field.</short>
        <descr>
          <var>filerecnamelength</var> describes the length of the <link id="FileRec"/> filename field.
</descr>
      </element>
      <!-- record type Visibility: default -->
      <element name="FileRec">
        <short>Record describing an untyped file.</short>
        <descr>
          <p>
            <var>FileRec</var> describes a untyped file. This record is made available
so it can be used to implement drivers for other than the normal file system
file records.
</p>
        </descr>
        <seealso>
          <link id="TFileRec"/>
          <link id="TextRec"/>
          <link id="TTextRec"/>
        </seealso>
      </element>
      <!-- variable Visibility: default -->
      <element name="FileRec.Handle">
        <short>Operating system file handle.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="FileRec.Mode">
        <short>Current file mode.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="FileRec.RecSize">
        <short>Record data size</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="FileRec._private">
        <short>Private data. Do not use</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="FileRec.UserData">
        <short>User data. Only use when implementing new type.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="FileRec.name">
        <short>File name</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="TextRecNameLength">
        <short>Length of text file record filename field </short>
      </element>
      <!-- constant Visibility: default -->
      <element name="TextRecBufSize">
        <short>Buffer size of text file record.</short>
        <var>TextRecBufSize</var> is the size of the default buffer in <link id="TextRec"/>
      </element>
      <!-- array type Visibility: default -->
      <element name="TextBuf">
        <short>Text record buffer array type</short>
        <descr>
          <var>TextBuf</var> is the type for the default buffer in <link id="TextRec"/>
        </descr>
      </element>
      <!-- record type Visibility: default -->
      <element name="TextRec">
        <short>Record describing a text file type</short>
        <descr>
          <p>
            <var>TextRec</var> describes a text file. This record is made available
so it can be used to implement drivers for other than the normal file system
file records.
</p>
          <p>To implement a driver, an <var>Assign</var> procedure must be implemented,
which fills in the various fields of the record. Most notably, the callback
functions must be filled in appropriately. 
After this, the normal file operations will handle all necessary calls to the
various callbacks.
</p>
        </descr>
        <seealso>
          <link id="TTextRec"/>
          <link id="TFileRec"/>
          <link id="FileRec"/>
        </seealso>
      </element>
      <!-- variable Visibility: default -->
      <element name="TextRec.Handle">
        <short>Operating system handle for file.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TextRec.Mode">
        <short>Open mode</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TextRec.bufsize">
        <short>Size of buffer.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TextRec._private">
        <short>Private data. Do not use.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TextRec.bufpos">
        <short>Current buffer position.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TextRec.bufend">
        <short>Current buffer end.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TextRec.bufptr">
        <short>Pointer to current buffer.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TextRec.openfunc">
        <short>File open function. Allocates handle.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TextRec.inoutfunc">
        <short>Read/write function</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TextRec.flushfunc">
        <short>Flush buffer function</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TextRec.closefunc">
        <short>Close handle function.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TextRec.UserData">
        <short>User data for text rec.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TextRec.name">
        <short>File name</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TextRec.buffer">
        <short>Default buffer.</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="HexDisplayPrefix">
        <short>String to prepend to hexadecimal values</short>
        <descr>
          <var>HexDisplayPrefix</var> is used by the formatting routines to indicate
that the number which follows the prefix is in Hexadecimal notation.
</descr>
        <errors>Currently unused in Free Pascal.
</errors>
      </element>
      <!-- constant Visibility: default -->
      <element name="PathDelim">
        <short>Path (directory) delimiter.</short>
        <descr>
          <var>PathDelim</var> refers to the system unit's <var>DirectorySeparator</var>
constant, it is for Delphi compatibility only.
</descr>
        <seealso>
          <link id="DriveDelim"/>
          <link id="PathSep"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="DriveDelim">
        <short>Drive letter delimiter</short>
        <descr>
          <var>DriveDelim</var> refers to the system unit's <var>DriveSeparator</var>
constant, it is for Delphi compatibility only.
</descr>
        <seealso>
          <link id="PathDelim"/>
          <link id="PathSep"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="PathSep">
        <short>Path separator. (Separates paths in search path lists)</short>
        <descr>
          <var>PathSep</var> refers to the system unit's <var>PathSeparator</var>
constant, it is for Delphi compatibility only.
</descr>
        <seealso>
          <link id="PathDelim"/>
          <link id="DriveDelim"/>
        </seealso>
      </element>
      <!-- alias type Visibility: default -->
      <element name="TFileRec">
        <short>Record describing an untyped file.</short>
        <descr>Alias for <link id="FileRec"/> for Delphi compatibility.
</descr>
      </element>
      <!-- alias type Visibility: default -->
      <element name="TTextRec">
        <short>Record describing a text file.</short>
        <descr>Alias for <link id="TextRec"/> for Delphi compatibility.
</descr>
      </element>
      <!-- array type Visibility: default -->
      <element name="TCaseTranslationTable">
        <short>Type for case conversion tables.</short>
        <descr>
          <var>TCaseTranslationTable</var> is the type for a lookup table that can
convert 255 ascii characters.
</descr>
        <seealso>
          <link id="UpperCaseTable"/>
          <link id="LowerCaseTable"/>
        </seealso>
      </element>
      <!-- variable Visibility: default -->
      <element name="UpperCaseTable">
        <short>Table for conversion of characters to uppercase.</short>
        <descr>
          <var>UpperCaseTable</var> is used by the <link id="UpperCase"/> routine (and
friends) to convert a string to all-uppercase characters. It is filled with
the appropriate entries by the <file>SysUtils</file> unit initialization routines.
</descr>
        <seealso>
          <link id="TCaseTranslationTable"/>
          <link id="LowerCaseTable"/>
          <link id="UpperCase"/>
        </seealso>
      </element>
      <!-- variable Visibility: default -->
      <element name="LowerCaseTable">
        <short>Table for conversion of characters to lowercase.</short>
        <descr>
          <var>LowerCaseTable</var> is used by the <link id="LowerCase"/> routine (and
friends) to convert a string to all-lowercase characters. It is filled with
the appropriate entries by the <file>SysUtils</file> unit initialization
routines.
</descr>
        <seealso>
          <link id="TCaseTranslationTable"/>
          <link id="UpperCaseTable"/>
          <link id="LowerCase"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="DateSeparator">
        <short>Date separator character (subject to locale).</short>
        <descr>
          <var>DateSeparator</var> is the character used by various date/time
conversion routines as the character that separates the day from the month
and the month from the year in a date notation. It is used by the date
formatting routines. The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="LongDateFormat"/>
          <link id="FormatDateTime"/>
          <link id="DateSeparator"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="ShortDateFormat">
        <short>Short Date Format string (subject to locale).</short>
        <descr>
          <var>ShortDateFormat</var> contains a template to format a date in a short
format. It is used by the date formatting routines. The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="LongDateFormat"/>
          <link id="FormatDateTime"/>
          <link id="DateSeparator"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="LongDateFormat">
        <short>Long date format string (subject to locale).</short>
        <descr>
          <var>LongDateFormat</var> contains a template to format a date in a long
format. It is used by the date formatting routines. The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="ShortDateFormat"/>
          <link id="FormatDateTime"/>
          <link id="DateSeparator"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="ShortMonthNames">
        <short>Names of months, abbreviated form.</short>
        <descr>
          <var>ShortMonthNames</var> is an array with the abbreviated names of months.
It is used by the date formatting routines. The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="ShortDateFormat"/>
          <link id="FormatDateTime"/>
          <link id="LongMonthNames"/>
          <link id="ShortDayNames"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="LongMonthNames">
        <short>Full names of months.</short>
        <descr>
          <var>LongMonthNames</var> is an array with the full names of months.
It is used by the date formatting routines. The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="ShortDateFormat"/>
          <link id="FormatDateTime"/>
          <link id="ShortMonthNames"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="ShortDayNames">
        <short>Names of days, abbreviated form.</short>
        <descr>
          <var>ShortDayNames</var> is an array with the abbreviated names of days.
It is used by the date formatting routines. The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="ShortDateFormat"/>
          <link id="FormatDateTime"/>
          <link id="LongDayNames"/>
          <link id="ShortMonthNames"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="LongDayNames">
        <short>Full names of days.</short>
        <descr>
          <var>LongDayNames</var> is an array with the full names of days.
It is used by the date formatting routines. The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="ShortDateFormat"/>
          <link id="FormatDateTime"/>
          <link id="ShortDayNames"/>
          <link id="ShortMonthNames"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="ShortTimeFormat">
        <short>Short time format string (subject to locale).</short>
        <descr>
          <var>ShortTimeFormat</var> contains a template to format a time in a short
notation. It is used by the time formatting routines. The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="LongTimeFormat"/>
          <link id="FormatDateTime"/>
          <link id="TimeSeparator"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="LongTimeFormat">
        <short>Long time format string (subject to locale)</short>
        <descr>
          <var>LongTimeFormat</var> contains a template to format a time in full
notation. It is used by the time formatting routines. The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="ShortTimeFormat"/>
          <link id="FormatDateTime"/>
          <link id="TimeSeparator"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="TimeSeparator">
        <short>Time separator character.</short>
        <descr>
          <var>TimeSeparator</var> is used by the time formatting routines to separate
the hours from the minutes and the minutes from the seconds.
It is used by the time formatting routines. The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="ShortTimeFormat"/>
          <link id="FormatDateTime"/>
          <link id="LongTimeFormat"/>
          <link id="TimeAMString"/>
          <link id="TimePMString"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="TimeAMString">
        <short>AM indicator string.</short>
        <descr>
          <var>TimeAMString</var> is used to display the AM symbol in the time
formatting routines.
It is used by the time formatting routines. The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <errors/>
        <seealso>
          <link id="ShortTimeFormat"/>
          <link id="FormatDateTime"/>
          <link id="LongTimeFormat"/>
          <link id="TimePMString"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="TimePMString">
        <short>PM indicator string.</short>
        <descr>
          <var>TimePMString</var> is used to display the PM symbol in the time
formatting routines.
It is used by the time formatting routines. The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="ShortTimeFormat"/>
          <link id="FormatDateTime"/>
          <link id="LongTimeFormat"/>
          <link id="TimeAMString"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="DecimalSeparator">
        <short>Decimal point separator.</short>
        <descr>
          <var>DecimalSeparator</var> is used to display the decimal symbol in
floating point numbers or currencies.
It is used by the float formatting routines. The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="ThousandSeparator"/>
          <link id="Format"/>
          <link id="FormatFloat"/>
          <link id="FloatToStr"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="ThousandSeparator">
        <short>Thousand grouping character.</short>
        <descr>
          <var>ThousandSeparator</var> is used to separate groups of thousands in 
floating point numbers or currencies. It is used by the float formatting routines.
The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="DecimalSeparator"/>
          <link id="Format"/>
          <link id="FormatFloat"/>
          <link id="FloatToStr"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="CurrencyDecimals">
        <short>Number of decimals in currency amounts.</short>
        <descr>
          <var>CurrencyDecimals</var> is the number of decimals to be used when
formatting a currency. It is used by the float formatting routines.
The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="Format"/>
          <link id="DecimalSeparator"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="CurrencyFormat">
        <short>Format string for currencies.</short>
        <descr>
          <var>CurrencyFormat</var> is the default format string for positive currencies.
It is used by the float formatting routines.
The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="CurrencyDecimals"/>
          <link id="NegCurrFormat"/>
          <link id="CurrencyString"/>
          <link id="Format"/>
          <link id="FloatToText"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="NegCurrFormat">
        <short>Format string for negative currencies.</short>
        <descr>
          <var>CurrencyFormat</var> is the default format string for negative currencies.
It is used by the float formatting routines.
The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="CurrencyDecimals"/>
          <link id="CurrencyFormat"/>
          <link id="CurrencyString"/>
          <link id="Format"/>
          <link id="FloatToText"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="CurrencyString">
        <short>Name of currency.</short>
        <descr>
          <var>CurrencyString</var> is the currency symbol for the current locale.
It is used by the float formatting routines.
The initialization routines of
the <file>SysUtils</file> unit initialize this string with a value conforming to
the regional preferences of the user or system regional default.
</descr>
        <seealso>
          <link id="CurrencyDecimals"/>
          <link id="NegCurrFormat"/>
          <link id="CurrencyFormat"/>
          <link id="Format"/>
          <link id="FloatToText"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="strlen">
        <short>Length of a null-terminated string.</short>
        <descr>Returns the length of the null-terminated string <var>P</var>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrNew"/>
        </seealso>
        <example file="stringex/ex1"/>
      </element>
      <!-- function Visibility: default -->
      <element name="strcopy">
        <short>Copy a null-terminated string</short>
        <descr>Copy the null terminated string in <var>Source</var> to <var>Dest</var>, and
returns a pointer to <var>Dest</var>. <var>Dest</var> needs enough room to contain
<var>Source</var>, i.e. <var>StrLen(Source)+1</var> bytes.
</descr>
        <errors>No length checking is performed.
</errors>
        <seealso>
          <link id="StrPCopy"/>
          <link id="StrLCopy"/>
          <link id="StrECopy"/>
        </seealso>
        <example file="stringex/ex4"/>
      </element>
      <!-- function Visibility: default -->
      <element name="strlcopy">
        <short>Copy a null-terminated string, limited in length.</short>
        <descr>Copies <var>MaxLen</var> characters from <var>Source</var> to <var>Dest</var>, and makes
<var>Dest</var> a null terminated string. 
</descr>
        <errors>No length checking is performed.
</errors>
        <seealso>
          <link id="StrCopy"/>
          <link id="StrECopy"/>
        </seealso>
        <example file="stringex/ex5"/>
      </element>
      <!-- function Visibility: default -->
      <element name="strecopy">
        <short>Copy a null-terminated string, return a pointer to the end.</short>
        <descr>Copies the Null-terminated string in <var>Source</var> to <var>Dest</var>, and
returns a pointer to the end (i.e. the terminating Null-character) of the
copied string.
</descr>
        <errors>No length checking is performed.
</errors>
        <seealso>
          <link id="StrLCopy"/>
          <link id="StrCopy"/>
        </seealso>
        <example file="stringex/ex6"/>
      </element>
      <!-- function Visibility: default -->
      <element name="strend">
        <short>Return a pointer to the end of a null-terminated string</short>
        <descr>Returns a pointer to the end of <var>P</var>. (i.e. to the terminating
null-character.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrLen"/>
        </seealso>
        <example file="stringex/ex7"/>
      </element>
      <!-- function Visibility: default -->
      <element name="strcat">
        <short>Concatenate 2 null-terminated strings.</short>
        <descr>Attaches <var>Source</var> to <var>Dest</var> and returns <var>Dest</var>.
</descr>
        <errors>No length checking is performed.
</errors>
        <seealso>
          <link id="StrLCat"/>
        </seealso>
        <example file="stringex/ex11"/>
      </element>
      <!-- function Visibility: default -->
      <element name="strcomp">
        <short>Compare 2 null-terminated strings, case sensitive.</short>
        <descr>
          <p>Compares the null-terminated strings <var>S1</var> and <var>S2</var>.
The result is 
</p>
          <ul>
            <li>A negative <var>Longint</var> when <var>S1&lt;S2</var>.
</li>
            <li>0 when <var>S1=S2</var>.
</li>
            <li>A positive <var>Longint</var> when <var>S1&gt;S2</var>.
</li>
          </ul>
          <p>For an example, see <link id="StrLComp"/>.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrLComp"/>
          <link id="StrIComp"/>
          <link id="StrLIComp"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="strlcomp">
        <short>Compare limited number of characters of 2 null-terminated strings </short>
        <descr>
          <p>Compares maximum <var>L</var> characters of the null-terminated strings 
<var>S1</var> and <var>S2</var>. 
The result is 
</p>
          <ul>
            <li>A negative <var>Longint</var> when <var>S1&lt;S2</var>.
</li>
            <li>0 when <var>S1=S2</var>.
</li>
            <li>A positive <var>Longint</var> when <var>S1&gt;S2</var>.
</li>
          </ul>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrComp"/>
          <link id="StrIComp"/>
          <link id="StrLIComp"/>
        </seealso>
        <example file="stringex/ex8"/>
      </element>
      <!-- function Visibility: default -->
      <element name="stricomp">
        <short>Compare 2 null-terminated strings, case insensitive.</short>
        <descr>
          <p>Compares the null-terminated strings <var>S1</var> and <var>S2</var>, ignoring case.
The result is 
</p>
          <ul>
            <li>A negative <var>Longint</var> when <var>S1&lt;S2</var>.
</li>
            <li>0 when <var>S1=S2</var>.
</li>
            <li>A positive <var>Longint</var> when <var>S1&gt;S2</var>.
</li>
          </ul>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrLComp"/>
          <link id="StrComp"/>
          <link id="StrLIComp"/>
        </seealso>
        <example file="stringex/ex8"/>
      </element>
      <!-- function Visibility: default -->
      <element name="strmove">
        <short>Move a null-terminated string to new location.</short>
        <descr>Copies <var>MaxLen</var> characters from <var>Source</var> to <var>Dest</var>. No
terminating null-character is copied.
Returns <var>Dest</var>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrLCopy"/>
          <link id="StrCopy"/>
        </seealso>
        <example file="stringex/ex10"/>
      </element>
      <!-- function Visibility: default -->
      <element name="strlcat">
        <short>Concatenate 2 null-terminated strings, with length boundary.</short>
        <descr>Adds <var>MaxLen</var> characters from <var>Source</var> to <var>Dest</var>, and adds a
terminating null-character. Returns <var>Dest</var>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrCat"/>
        </seealso>
        <example file="stringex/ex12"/>
      </element>
      <!-- function Visibility: default -->
      <element name="strscan">
        <short>Find first occurrence of a character in a null-terminated string.</short>
        <descr>Returns a pointer to the first occurrence of the character <var>C</var> in the
null-terminated string <var>P</var>. If <var>C</var> does not occur, returns
<var>Nil</var>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrRScan"/>
          <link id="StrPos"/>
        </seealso>
        <example file="stringex/ex13"/>
      </element>
      <!-- function Visibility: default -->
      <element name="strrscan">
        <short>Find last occurrence of a character in a null-terminated string.</short>
        <descr>
          <p>Returns a pointer to the last occurrence of the character <var>C</var> in the
null-terminated string <var>P</var>. If <var>C</var> does not occur, returns
<var>Nil</var>.
</p>
          <p>For an example, see <link id="StrScan"/>.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrScan"/>
          <link id="StrPos"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="strlower">
        <short>Convert null-terminated string to all-lowercase.</short>
        <descr>Converts <var>P</var> to an all-lowercase string. Returns <var>P</var>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrUpper"/>
        </seealso>
        <example file="stringex/ex14"/>
      </element>
      <!-- function Visibility: default -->
      <element name="strupper">
        <short>Convert null-terminated string to all-uppercase</short>
        <descr>
          <p>Converts <var>P</var> to an all-uppercase string. Returns <var>P</var>.
</p>
          <p>For an example, see <link id="StrLower"/>
          </p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrLower"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="strlicomp">
        <short>Compare limited number of characters in 2 null-terminated strings,
ignoring case.</short>
        <descr>
          <p>Compares maximum <var>L</var> characters of the null-terminated strings <var>S1</var> 
and <var>S2</var>, ignoring case.
The result is 
</p>
          <ul>
            <li>A negative <var>Longint</var> when <var>S1&lt;S2</var>.
</li>
            <li>0 when <var>S1=S2</var>.
</li>
            <li>A positive <var>Longint</var> when <var>S1&gt;S2</var>.
</li>
          </ul>
          <p>For an example, see <link id="StrIComp"/>
          </p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrLComp"/>
          <link id="StrComp"/>
          <link id="StrIComp"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="strpos">
        <short>Find position of one null-terminated substring in another.</short>
        <descr>Returns a pointer to the first occurrence of <var>S2</var> in <var>S1</var>.
If <var>S2</var> does not occur in <var>S1</var>, returns <var>Nil</var>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrScan"/>
          <link id="StrRScan"/>
        </seealso>
        <example file="stringex/ex15"/>
      </element>
      <!-- function Visibility: default -->
      <element name="strnew">
        <short>Allocate room for new null-terminated string.</short>
        <descr>Copies <var>P</var> to the Heap, and returns a pointer to the copy.
</descr>
        <errors>Returns <var>Nil</var> if no memory was available for the copy.
</errors>
        <seealso>
          <link id="StrCopy"/>
          <link id="StrDispose"/>
        </seealso>
        <example file="stringex/ex16"/>
      </element>
      <!-- function Visibility: default -->
      <element name="AnsiCompareFileName">
        <short>Compare 2 filenames.</short>
        <descr>
          <p>
            <var>AnsiCompareFileName</var> compares 2 filenames <var>S1</var> and
<var>S2</var>, and returns
</p>
          <dl>
            <dt>&lt; 0</dt>
            <dd>if <var>S1</var>&lt;<var>S2</var>. </dd>
            <dt>= 0</dt>
            <dd>if <var>S1=S2</var>. </dd>
            <dt>&gt; 0</dt>
            <dd>if <var>S1</var>&gt;<var>S2</var>. </dd>
          </dl>
          <p>The function actually checks <var>FileNameCaseSensitive</var> and returns
the result of <link id="AnsiCompareStr"/> or <link id="AnsiCompareText"/> 
depending on whether <var>FileNameCaseSensitive</var> is <var>True</var> or
<var>False</var>
          </p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiCompareStr"/>
          <link id="AnsiCompareText"/>
          <link id="AnsiLowerCaseFileName"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="AnsiLowerCaseFileName">
        <short>Convert filename to lowercase.</short>
        <descr>
          <p>
            <var>AnsiLowerCaseFileName</var> simply returns the result of 
</p>
          <code>AnsiLowerCase(S);
</code>
        </descr>
        <seealso>
          <link id="AnsiLowerCase"/>
          <link id="AnsiCompareFileName"/>
          <link id="AnsiUpperCaseFileName"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="AnsiUpperCaseFileName">
        <short>Convert filename to uppercase.</short>
        <descr>
          <p>
            <var>AnsiUpperCaseFileName</var> simply returns the result of
</p>
          <code>AnsiUpperCase(S);
</code>
        </descr>
        <seealso>
          <link id="AnsiUpperCase"/>
          <link id="AnsiCompareFileName"/>
          <link id="AnsiLowerCaseFileName"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="AnsiPos">
        <short>Return Position of one ansistring in another.</short>
        <descr>
          <var>AnsiPos</var> does the same as the standard <var>Pos</var> function.
</descr>
        <seealso>
          <link id="AnsiStrPos"/>
          <link id="AnsiStrScan"/>
          <link id="AnsiStrRScan"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="AnsiStrPos">
        <short>Return position of one null-terminated substring in another</short>
        <descr>
          <var>AnsiStrPos</var> returns a pointer to the first occurrence of
<var>SubStr</var> in <var>Str</var>. If <var>SubStr</var> does not occur in
<var>Str</var> then <var>Nil</var> is returned.
</descr>
        <errors>An access violation may occur if either <var>Str</var> or <var>SubStr</var>
point to invalid memory.
</errors>
        <seealso>
          <link id="AnsiPos"/>
          <link id="AnsiStrScan"/>
          <link id="AnsiStrRScan"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="AnsiStrRScan">
        <short>Find last occurrence of a character in a null-terminated string.</short>
        <descr>
          <var>AnsiStrPos</var> returns a pointer to the <em>last</em> occurrence of
the character <var>Chr</var> in <var>Str</var>. If <var>Chr</var> does not occur in
<var>Str</var> then <var>Nil</var> is returned.
</descr>
        <errors>An access violation may occur if <var>Str</var> points to invalid memory.
</errors>
        <seealso>
          <link id="AnsiPos"/>
          <link id="AnsiStrScan"/>
          <link id="AnsiStrPos"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="AnsiStrScan">
        <short>Find first occurrence of a character in a null-terminated string.</short>
        <descr>
          <var>AnsiStrPos</var> returns a pointer to the <em>first</em> occurrence of
the character <var>Chr</var> in <var>Str</var>. If <var>Chr</var> does not occur in
<var>Str</var> then <var>Nil</var> is returned.
</descr>
        <errors>An access violation may occur if <var>Str</var> points to invalid memory.
</errors>
        <seealso>
          <link id="AnsiPos"/>
          <link id="AnsiStrScan"/>
          <link id="AnsiStrPos"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="DirSeparators">
        <short>Characters that are known directory separators.</short>
        <descr>
          <var>DirSeparators</var> is a set of characters which are known directory
separator characters on all supported platforms. This set is used by the
<link id="SetDirSeparators"/> call to correct pathnames for the current
platform.
</descr>
        <seealso>
          <link id="DoDirSeparators"/>
          <link id="SetDirSeparators"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="IncludeTrailingPathDelimiter">
        <short>Add trailing directory separator to a pathname, if needed.</short>
        <descr>
          <p>
            <var>IncludeTrailingPathDelimiter</var> adds a trailing path delimiter
character (<link id="PathDelim"/>) to <var>Path</var> if none is present
yet, and returns the result.
</p>
          <p>If <var>Path</var> is empty, a path delimiter is returned, for Delphi
compatibility.
</p>
        </descr>
        <seealso>
          <link id="IncludeTrailingBackslash"/>
          <link id="ExcludeTrailingPathDelimiter"/>
          <link id="PathDelim"/>
          <link id="IsPathDelimiter"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="IncludeTrailingBackslash">
        <short>Add trailing directory separator to a pathname, if needed.</short>
        <descr>
          <var>IncludeTrailingBackslash</var> is provided for backwards compatibility
with Delphi. Use <link id="IncludeTrailingPathDelimiter"/> instead.
</descr>
        <seealso>
          <link id="IncludeTrailingPathDelimiter"/>
          <link id="ExcludeTrailingPathDelimiter"/>
          <link id="PathDelim"/>
          <link id="IsPathDelimiter"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="ExcludeTrailingPathDelimiter">
        <short>Strip trailing directory separator from a pathname, if needed.</short>
        <descr>
          <var>ExcludeTrailingPathDelimiter</var> removes the trailing path delimiter
character (<link id="PathDelim"/>) from <var>Path</var> if it is present,
and returns the result. 
</descr>
        <seealso>
          <link id="ExcludeTrailingBackslash"/>
          <link id="IncludeTrailingPathDelimiter"/>
          <link id="PathDelim"/>
          <link id="IsPathDelimiter"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="ExcludeTrailingBackSlash">
        <short>Strip trailing directory separator from a pathname, if needed.</short>
        <descr>
          <var>ExcludeTrailingBackslash</var> is provided for backwards compatibility
with Delphi. Use <link id="ExcludeTrailingPathDelimiter"/> instead.
</descr>
        <seealso>
          <link id="IncludeTrailingPathDelimiter"/>
          <link id="ExcludeTrailingPathDelimiter"/>
          <link id="PathDelim"/>
          <link id="IsPathDelimiter"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="IsPathDelimiter">
        <short>Is the character at the given position a pathdelimiter ?</short>
        <descr>
          <var>IsPathDelimiter</var> returns <var>True</var> if the character at
position <var>Index</var> equals <link id="PathDelim"/>, i.e. if it is a
path delimiter character for the current platform.
</descr>
        <errors>
          <link id="IncludeTrailingPathDelimiter"/>
          <link id="ExcludeTrailingPathDelimiter"/>
          <link id="PathDelim"/>
        </errors>
        <seealso/>
      </element>
      <!-- function Visibility: default -->
      <element name="SameFileName">
        <short>Are two filenames referring to the same file ?</short>
        <descr>
          <var>SameFileName</var> returns <var>True</var> if calling <link id="AnsiCompareFileName"/> with arguments <var>S1</var> and <var>S2</var>
returns 0, and returns <var>False</var> otherwise.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="AnsiCompareFileName"/>
        </seealso>
      </element>
      <!-- record type Visibility: default -->
      <element name="TSearchRec">
        <short>Record describing a search handle or result </short>
        <descr>
          <p>
            <var>TSearchRec</var> is a search handle description record. It is
initialized by a call to <link id="FindFirst"/> and can be used to do
subsequent calls to <link id="FindNext"/>. It contains the result of these
function calls. It must be used to close the search sequence with a call to
<link id="FindClose"/>. 
</p>
          <remark>Not all fields of this record should be used. Some of the fields are for
internal use only. (<var>PathOnly</var> for example, is only provided for
Kylix compatibility)
</remark>
        </descr>
        <seealso>
          <link id="FindFirst"/>
          <link id="FindNext"/>
          <link id="FindClose"/>
        </seealso>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSearchRec.Time">
        <short>Timestamp of the file.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSearchRec.Size">
        <short>Size of the file.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSearchRec.Attr">
        <short>Attributes of the file.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSearchRec.Name">
        <short>File name (no directory part)</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSearchRec.ExcludeAttr">
        <short>Attributes to exclude from search (do not use).</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSearchRec.FindHandle">
        <short>Internal OS handle (do not use).</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSearchRec.PathOnly">
        <short>For kylix compatibility, on Unices only (do not use).</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="faReadOnly">
        <short>Read-Only file.</short>
        <descr>Attribute of a file, meaning the file is read-only. 
Used in <link id="TSearchRec"/> and <link id="FindFirst"/>
        </descr>
        <seealso>
          <link id="TSearchRec"/>
          <link id="FindFirst"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="faHidden">
        <short>Hidden file.</short>
        <descr>Attribute of a file, meaning the file is hidden. On unix, this means
the filename starts with a dot character.</descr>
        <descr>Attribute of a file, meaning the file is read-only. 
Used in <link id="TSearchRec"/> and <link id="FindFirst"/>
        </descr>
        <seealso>
          <link id="TSearchRec"/>
          <link id="FindFirst"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="faSysFile">
        <short>System file (Dos/Windows only)</short>
        <descr>Attribute of a file, meaning the file is a system file. 
Used in <link id="TSearchRec"/> and <link id="FindFirst"/>
        </descr>
        <seealso>
          <link id="TSearchRec"/>
          <link id="FindFirst"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="faVolumeId">
        <short>Volume id (Dos/Windows only)</short>
        <descr>Attribute of a file, meaning the file contains the volume ID. 
Used in <link id="TSearchRec"/> and <link id="FindFirst"/>
        </descr>
        <seealso>
          <link id="TSearchRec"/>
          <link id="FindFirst"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="faDirectory">
        <short>File is a directory</short>
        <descr>Attribute of a file, meaning the file is a directory. 
Used in <link id="TSearchRec"/> and <link id="FindFirst"/>
        </descr>
        <seealso>
          <link id="TSearchRec"/>
          <link id="FindFirst"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="faArchive">
        <short>Archive bit is set</short>
        <descr>Attribute of a file, meaning the file has the archive bit set.
Used in <link id="TSearchRec"/> and <link id="FindFirst"/>
        </descr>
        <seealso>
          <link id="TSearchRec"/>
          <link id="FindFirst"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="faAnyFile">
        <short>Match any file</short>
        <descr>Use this attribute in the <link id="FindFirst"/> call to find all matching
files.
</descr>
        <seealso>
          <link id="FindFirst"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="fmOpenRead">
        <short>Open file in read-only mode</short>
        <descr>
          <var>fmOpenRead</var> is used in the <link id="FileOpen"/> call to open a
file in read-only mode.
</descr>
        <seealso>
          <link id="FileOpen"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="fmOpenWrite">
        <short>Open file in write-only mode</short>
        <descr>
          <var>fmOpenWrite</var> is used in the <link id="FileOpen"/> call to open a
file in write-only mode.
</descr>
        <seealso>
          <link id="FileOpen"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="fmOpenReadWrite">
        <short>Open file in read/write mode.</short>
        <descr>
          <var>fmOpenReadWrite</var> is used in the <link id="FileOpen"/> call to open a
file in read-write mode.
</descr>
        <seealso>
          <link id="FileOpen"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="fmShareCompat">
        <short>Open file in DOS share-compatibility mode</short>
        <descr>
          <var>fmOpenShareCompat</var> is used in the <link id="FileOpen"/> call
OR-ed together with one of <link id="fmOpenReadWrite"/>, <link id="fmOpenRead"/> or <link id="fmOpenWrite"/>,to open a
file in a sharing modus that is equivalent to sharing implemented in MS-DOS.
</descr>
        <seealso>
          <link id="FileOpen"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="fmShareExclusive">
        <short>Lock file for exclusive use</short>
        <descr>
          <var>fmOpenShareExclusive</var> is used in the <link id="FileOpen"/> call
OR-ed together with one of <link id="fmOpenReadWrite"/>, <link id="fmOpenRead"/> or <link id="fmOpenWrite"/>, to open a
file exclusively.
</descr>
        <seealso>
          <link id="FileOpen"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="fmShareDenyWrite">
        <short>Lock file so other processes can only read.</short>
        <descr>
          <var>fmOpenShareWrite</var> is used in the <link id="FileOpen"/> call
OR-ed together with one of <link id="fmOpenReadWrite"/>, <link id="fmOpenRead"/> or <link id="fmOpenWrite"/>, to open a
file so other processes cannot write to it, they can only read.
</descr>
        <seealso>
          <link id="FileOpen"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="fmShareDenyRead">
        <short>Lock file so other processes cannot read.</short>
        <descr>
          <p>
            <var>fmOpenShareRead</var> is used in the <link id="FileOpen"/> call
OR-ed together with one of <link id="fmOpenReadWrite"/>, <link id="fmOpenRead"/> or <link id="fmOpenWrite"/>, to open a
file so other processes cannot read from it.
</p>
          <p>This constant only works on Windows, because other operating systems do not
support this constants.
</p>
        </descr>
        <seealso>
          <link id="FileOpen"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="fmShareDenyNone">
        <short>Do not lock file.</short>
        <descr>
          <var>fmOpenShareExclusive</var> is used in the <link id="FileOpen"/> call
OR-ed together with one of <link id="fmOpenReadWrite"/>, <link id="fmOpenRead"/> or <link id="fmOpenWrite"/>, to open a
file so other processes can read/write the file as well.
</descr>
        <seealso>
          <link id="FileOpen"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="fsFromBeginning">
        <short>Start seek operation from beginning of file.</short>
        <descr>
          <var>fsFromBeginning</var> is used to indicate in the <link id="FileSeek"/>
call that a seek operation should be started at the start of the file.
</descr>
        <seealso>
          <link id="FileSeek"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="fsFromCurrent">
        <short>Start seek operation from current position in file.</short>
        <descr>
          <var>fsFromBeginning</var> is used to indicate in the <link id="FileSeek"/>
call that a seek operation should be started at the current position in the file.
</descr>
        <seealso>
          <link id="FileSeek"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="fsFromEnd">
        <short>Start seek operation from end of file.</short>
        <descr>
          <var>fsFromBeginning</var> is used to indicate in the <link id="FileSeek"/>
call that a seek operation should be started at the last position in the file.
</descr>
        <seealso>
          <link id="FileSeek"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="DirectoryExists">
        <short>Check whether a directory exists in the file system.</short>
        <descr>
          <var>DirectoryExists</var> checks whether <var>Directory</var> exists in the
filesystem and is actually a directory. If this is the case, the function
returns <var>True</var>, otherwise <var>False</var> is returned.
</descr>
        <seealso>
          <link id="FileExists"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="FileIsReadOnly">
        <short>Check whether a file is read-only.</short>
        <descr>
          <var>FileIsReadOnly</var> checks whether <var>FileName</var> exists in the
filesystem and is a read-only file. If this is the case, the function
returns <var>True</var>, otherwise <var>False</var> is returned.
</descr>
        <seealso>
          <link id="FileExists"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="GetFileHandle">
        <short>Extract OS handle from an untyped file or text file.</short>
        <descr>
          <var>GetFileHandle</var> returns the operating system handle for the file
descriptor <var>F</var>. It can be used in various file operations which are
not directly supported by the pascal language.
</descr>
      </element>
      <!-- function Visibility: default -->
      <element name="InterLockedIncrement">
        <short>Thread-safe integer increment.</short>
        <descr>
          <var>InterlockedIncrement</var> increments <var>Target</var> in a
thread-safe way, and returns the new value of <var>Target</var>
        </descr>
        <seealso>
          <link id="InterlockedDecrement"/>
          <link id="InterlockedExchange"/>
          <link id="InterlockedExchangeAdd"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="InterLockedDecrement">
        <short>Thread-safe integer decrement</short>
        <descr>
          <var>InterlockedDecrement</var> decrements <var>Target</var> in a
thread-safe way, and returns the new value of <var>Target</var>
        </descr>
        <seealso>
          <link id="InterlockedIncrement"/>
          <link id="InterlockedExchange"/>
          <link id="InterlockedExchangeAdd"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="InterLockedExchange">
        <short>Thread-safe exchange of 2 values.</short>
        <descr>
          <var>InterlockedDecrement</var> replaces <var>Target</var> with
<var>Source</var> in a thread-safe way, and returns the old value 
of <var>Target</var>
        </descr>
        <seealso>
          <link id="InterlockedIncrement"/>
          <link id="InterlockedDecrement"/>
          <link id="InterlockedExchange"/>
          <link id="InterlockedExchangeAdd"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="InterLockedExchangeAdd">
        <short>Thread-safe exchange of 2 values</short>
        <descr>
          <var>InterlockedDecrement</var> adds to <var>Target</var> the value of 
<var>Source</var> in a thread-safe way, and returns the old value 
of <var>Target</var>
        </descr>
        <seealso>
          <link id="InterlockedIncrement"/>
          <link id="InterlockedDecrement"/>
          <link id="InterlockedExchange"/>
        </seealso>
      </element>
      <!-- procedure Visibility: default -->
      <element name="FreeAndNil">
        <short>Free object if needed, and set object reference to <var>Nil</var>
        </short>
        <descr>
          <var>FreeAndNil</var> will free the object in <var>Obj</var> and will
set the reference in <var>Obj</var> to <var>Nil</var>. The reference is set
to <var>Nil</var> first, so if an exception occurs in the destructor of the
object, the reference will be <var>Nil</var> anyway.
</descr>
        <errors>Exceptions that occur during the destruction of <var>Obj</var> are not
caught.
</errors>
      </element>
      <element name="GetTempDir">
        <short>Return name of system's temporary directory</short>
        <descr>
          <p>
            <var>GetTempDir</var> returns the temporary directory of the system. If
<var>Global</var> is <var>True</var> (the default value) it returns the 
system temporary directory, if it is <var>False</var> then a directory 
private to the user is returned. The returned name will end with a 
directory delimiter character.
</p>
          <p>These directories may be the same. No guarantee is made that this directory
exists or is writeable by the user.
</p>
          <p>The <link id="OnGetTempDir"/> handler may be set to provide custom handling
of this routine: One could implement callbacks which take into consideration 
frameworks like KDE or GNOME, and return a different value from the default
system implementation.
</p>
        </descr>
        <errors>On error, an empty string is returned.
</errors>
        <seealso>
          <link id="OnGetTempDir"/>
          <link id="GetTempFileName"/>
        </seealso>
      </element>
      <element name="GetTempFileName">
        <short>Return the name of a temporary file.</short>
        <descr>
          <p>
            <var>GetTempFileName</var> returns the name of a temporary file in directory
<var>Dir</var>. The name of the file starts with <var>Prefix</var>.
</p>
          <p>If <var>Dir</var> is empty, the value returned by <var>GetTempDir</var> is
used, and if <var>Prefix</var> is empty, 'TMP' is used.
</p>
          <p>The <link id="OnGetTempFile"/> handler may be set to provide custom handling
of this routine: One could implement callbacks which take into consideration
frameworks like KDE or GNOME, and return a different value from the default
system implementation.
</p>
        </descr>
        <errors>On error, an empty string is returned.
</errors>
        <seealso>
          <link id="GetTempDir"/>
          <link id="OnGetTempFile"/>
        </seealso>
      </element>
      <element name="OnGetTempDir">
        <short>Handler for <link id="#rtl.sysutils.GetTempDir">GetTempDir</link> function.</short>
        <descr>
          <var>OnGetTempDir</var> can be used to provide custom behaviour for the
<link id="GetTempDir"/> function. Note that the returned name should have a
trailing directory delimiter character.
</descr>
        <seealso>
          <link id="GetTempDir"/>
          <link id="OnGetTempFile"/>
        </seealso>
      </element>
      <element name="OnGetTempFile">
        <short>Handler for <link id="#rtl.sysutils.GetTempFileName">GetTempFileName</link> function.</short>
        <descr>
          <var>OnGetTempDir</var> can be used to provide custom behaviour for the
<link id="GetTempFileName"/> function. Note that the values for
<var>Prefix</var> and <var>Dir</var> should be observed.
</descr>
        <seealso>
          <link id="OnGetTempDir"/>
          <link id="GetTempFileName"/>
        </seealso>
      </element>
      <element name="TGetTempDirEvent">
        <short>Function prototype for <link id="#rtl.sysutils.OnGetTempDir">OnGetTempDir</link> handler.</short>
      </element>
      <element name="TGetTempFileEvent">
        <short>Function prototype for <link id="#rtl.sysutils.OnGetTempFile">OnGetTempFile</link> handler.</short>
      </element>
      <element name="TLineEndStr">
        <short>End-of-line string</short>
        <descr>
          <var>TLineEndStr</var> is used in the <link id="TextRec"/> record to
indicate the end-of-line sequence for a text file.
</descr>
      </element>
      <element name="TSysLocale">
        <short>Type describing the current locale</short>
        <descr>
          <var>TSysLocale</var> describes the current locale. If <var>Fareast</var> or
<var>MBCS</var> is <var>True</var>, then the current locale uses a
Multi-Byte Character Set. If <var>MiddleEast</var> or <var>RightToLeft</var>
is <var>True</var> then words and sentences are read from right to left.
</descr>
      </element>
      <element name="TSysLocale.FarEast">
        <short>Multi-Byte Character Set used</short>
      </element>
      <element name="TSysLocale.MiddleEast">
        <short>Reading direction is Right-to-left</short>
      </element>
      <element name="TSysLocale.MBCS">
        <short>Multi-Byte Character Set used</short>
      </element>
      <element name="TSysLocale.RightToLeft">
        <short>Reading direction is Right-to-left</short>
      </element>
      <element name="SysLocale">
        <short>Variable with locale information</short>
        <descr>
          <var>SysLocale</var> is initialized by the initialization code of the
<file>SysUtils</file> unit. For an explanation of the fields, see <link id="TSysLocale"/>
        </descr>
        <seealso>
          <link id="TSysLocale"/>
        </seealso>
      </element>
      <element name="ForceDirectories">
        <short>Create a chain of directories</short>
        <descr>
          <var>ForceDirectories</var> tries to create any missing directories in
<var>Dir</var> till the whole path in <var>Dir</var> exists. It returns
<var>True</var> if <var>Dir</var> already existed or was created
succesfully. If it failed to create any of the parts, <var>False</var> is
returned.
</descr>
      </element>
      <element name="StrCharLength">
        <short>Return the length of a null-terminated string in characters.</short>
        <descr>
          <var>StrCharLength</var> returns the length of the null-terminated string
<var>Str</var> (a widestring) in characters (not in bytes). It uses the
widestring manager to do this.
</descr>
      </element>
      <element name="TryStrToFloat">
        <short>Try to convert a string to a float.</short>
        <descr>
          <var>TryStrToFloat</var> tries to convert the string <var>S</var> to a
floating point value, and stores the result in <var>Value</var>. It returns
<var>True</var> if the operation was succesful, and <var>False</var> if it
failed. This operation takes into account the system settings for floating
point representations.
</descr>
        <errors>On error, <var>False</var> is returned.
</errors>
        <seealso>
          <link id="StrToFloat"/>
        </seealso>
      </element>
      <element name="WideCompareStr">
        <short>Compare two widestrings (case sensitive)</short>
        <descr>
          <p>
            <var>WideCompareStr</var> compares two widestrings and returns the following
result:
</p>
          <dl>
            <dt>&lt; 0</dt>
            <dd>if <var>S1&lt;S2</var>.</dd>
            <dt>0</dt>
            <dd>if <var>S1=S2</var>.</dd>
            <dt>&gt; 0</dt>
            <dd>if <var>S1&gt;S2</var>.</dd>
          </dl>
          <p>The comparision takes into account wide characters, i.e. it takes
care of strange accented characters. Contrary to <link id="WideCompareText"/>,
the comparision is case sensitive.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="WideCompareText"/>
          <link id="WideSameStr"/>
          <link id="WideSameText"/>
        </seealso>
      </element>
      <element name="WideCompareText">
        <short>Compare two widestrings  (ignoring case).</short>
        <descr>
          <p>
            <var>WideCompareStr</var> compares two widestrings and returns the following
result:
</p>
          <dl>
            <dt>&lt; 0</dt>
            <dd>if <var>S1&lt;S2</var>.</dd>
            <dt>0</dt>
            <dd>if <var>S1=S2</var>.</dd>
            <dt>&gt; 0</dt>
            <dd>if <var>S1&gt;S2</var>.</dd>
          </dl>
          <p>The comparision takes into account wide characters, i.e. it takes
care of strange accented characters. Contrary to <link id="WideCompareStr"/>,
the comparision is case insensitive.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="WideCompareStr"/>
          <link id="WideSameStr"/>
          <link id="WideSameText"/>
        </seealso>
      </element>
      <element name="WideFormat">
        <short>Format a wide string.</short>
        <descr>
          <p>
            <var>WideFormat</var> does the same as <link id="Format"/> but accepts as a
formatting string a WideString.  The resulting string is also a WideString.
</p>
          <p>For more information about the used formatting characters, see the 
<link id="Format"/> string.
</p>
        </descr>
        <seealso>
          <link id="Format"/>
        </seealso>
      </element>
      <element name="WideLowerCase">
        <short>Change a widestring to all-lowercase.</short>
        <descr>
          <p>
            <var>WideLowerCase</var> converts the string <var>S</var> to lowercase characters
and returns the resulting string. It takes into account the operating system language
settings when doing this, so spcial characters are converted correctly as
well.
</p>
          <remark>On Unix-like platforms, a widestring manager must be installed for this function
to work correctly.
</remark>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="WideUpperCase"/>
        </seealso>
      </element>
      <element name="WideSameStr">
        <short>Check whether two widestrings are the same (case sensitive)</short>
        <descr>
          <var>WideSameStr</var> returns <var>True</var> if <link id="WideCompareStr"/>
returns 0 (zero), i.e. when <var>S1</var> and <var>S2</var> are the same
string (taking into account case).
</descr>
        <seealso>
          <link id="WideSameText"/>
          <link id="WideCompareStr"/>
          <link id="WideCompareText"/>
          <link id="AnsiSameStr"/>
        </seealso>
      </element>
      <element name="WideSameText">
        <short>Check whether two widestrings are the same (ignoring case)</short>
        <descr>
          <var>WideSameText</var> returns <var>True</var> if <link id="WideCompareText"/>
returns 0 (zero), i.e. when <var>S1</var> and <var>S2</var> are the same
string (taking into account case).
</descr>
        <seealso>
          <link id="WideSameStr"/>
          <link id="WideCompareStr"/>
          <link id="WideCompareText"/>
          <link id="AnsiSameText"/>
        </seealso>
      </element>
      <element name="WideUpperCase">
        <short>Change a widestring to all-lowercase.</short>
        <descr>
          <p>
            <var>WideUpperCase</var> converts the string <var>S</var> to uppercase characters
and returns the resulting string. It takes into account the operating system language
settings when doing this, so spcial characters are converted correctly as
well.
</p>
          <remark>On Unix-like platforms, a widestring manager must be installed for this function
to work correctly.
</remark>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="WideLowerCase"/>
        </seealso>
      </element>
      <element name="WrapText">
        <short>Word-wrap a text.</short>
        <descr>
          <var>WrapText</var> does a wordwrap at column <var>MaxCol</var> of the string 
in <var>Line</var>. It breaks the string only at characters which are in 
<var>BreakChars</var> (default whitespace and hyphen) and inserts then the string
<var>BreakStr</var> (default the lineending character for the current OS).
</descr>
        <seealso>
          <link id="StringReplace"/>
        </seealso>
      </element>
      <element name="FormatCurr">
        <short>Format a currency</short>
        <descr>
          <p>
            <var>FormatCurr</var> formats the currency <var>Value</var> according to the
formatting rule in <var>Format</var>, and returns the resulting string.
</p>
          <p>For an explanation of the formatting characters, see <link id="FormatFloat"/>.
</p>
        </descr>
        <seealso>
          <link id="FormatFloat"/>
          <link id="FloatToText"/>
        </seealso>
      </element>
      <element name="TryStrToCurr">
        <short>Try to convert a string to a currency</short>
        <descr>
          <p>
            <var>TryStrToCurr</var> converts the string <var>S</var> to a currency value
and returns the value in <var>Value</var>. The function returns
<var>True</var> if it was successful, <var>False</var> if not. This is 
contrary to <link id="StrToCurr"/>, which raises an exception when the 
conversion fails.
</p>
          <p>The function takes into account locale information.
</p>
        </descr>
        <seealso>
          <link id="StrToCurr"/>
          <link id="TextToFloat"/>
        </seealso>
      </element>
      <element name="WideFmtStr">
        <short>Widestring format</short>
        <descr>
          <var>WideFmtStr</var> formats <var>Args</var> according to the format string
in <var>Fmt</var> and returns the resulting string in <var>Res</var>.
</descr>
        <seealso>
          <link id="WideFormat"/>
          <link id="WideFormatBuf"/>
          <link id="Format"/>
        </seealso>
      </element>
      <element name="WideFormatBuf">
        <short>Format widestring in a buffer.</short>
        <descr>
          <var>WideFormatBuf</var> calls simply <link id="WideFormat"/> with
<var>Fmt</var> (with length <var>FmtLen</var> bytes) and stores maximum 
<var>BufLen</var> bytes in the buffer <var>buf</var>. It returns the number
of copied bytes.
</descr>
        <seealso>
          <link id="WideFmtStr"/>
          <link id="WideFormat"/>
          <link id="Format"/>
          <link id="FormatBuf"/>
        </seealso>
      </element>
      <!-- unresolved type reference Visibility: default -->
      <element name="Unix">
        <short>Unix functionality</short>
      </element>
      <!-- unresolved type reference Visibility: default -->
      <element name="errors">
        <short>Error descriptions</short>
      </element>
      <!-- unresolved type reference Visibility: default -->
      <element name="sysconst">
        <short>Message Strings</short>
      </element>
      <!-- unresolved type reference Visibility: default -->
      <element name="Unixtype">
        <short>Unix functionality types</short>
      </element>
      <!-- function Visibility: default -->
      <element name="TryStrToDate">
        <short>Try to convert a string with a date indication to a TDateTime value</short>
        <descr>
          <p>
            <var>TryStrToDate</var> tries to convert the string <var>S</var> to a <var>TDateTime</var> date
value, and stores the date in <var>Value</var>. The Date must consist of 1 to three digits, separated by the
<var>DateSeparator</var> character. If two numbers are given, they
are supposed to form the day and month of the current year. If only
one number is given, it is supposed to represent the day of the
current month. (This is <em>not</em> supported in Delphi)
</p>
          <p>The order of the digits (y/m/d, m/d/y, d/m/y) is determined from the
<var>ShortDateFormat</var> variable.
</p>
          <p>The function returns <var>True</var> if the string contained a valid date indication,
<var>False</var> otherwise.
</p>
        </descr>
        <seealso>
          <link id="StrToDate"/>
          <link id="StrToTime"/>
          <link id="TryStrToTime"/>
          <link id="TryStrToDateTime"/>
          <link id="DateToStr"/>
          <link id="TimeToStr"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="TryStrToTime">
        <short>Try to convert a string with a time indication to a TDateTime value</short>
        <descr>
          <p>
            <var>TryStrToTime</var> tries to convert the string <var>S</var> to a <var>TDateTime</var> time
value, and stores the result in <var>Value</var>. The time must consist of 1 to 4 digits, 
separated by the <var>TimeSeparator</var> character. If two numbers are given, they
are supposed to form the hour and minutes.
</p>
          <p>The function returns <var>True</var> if the string contained a valid time indication,
<var>False</var> otherwise.
</p>
        </descr>
        <seealso>
          <link id="TryStrToDate"/>
          <link id="TryStrToDateTime"/>
          <link id="StrToDate"/>
          <link id="StrToTime"/>
          <link id="DateToStr"/>
          <link id="TimeToStr"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="TryStrToDateTime">
        <short>Try to convert a string with date/time indication to a TDateTime value</short>
        <descr>
          <p>
            <var>TryStrToDateTime</var> tries to convert the string <var>S</var> to a <var>TDateTime</var> date and time
value, and stores the result in <var>Value</var>. The date must consist of 1 to three digits, separated by the
<var>DateSeparator</var> character. If two numbers are given, they
are supposed to form the day and month of the current year. If only
one number is given, it is supposed to represent the day of the
current month (This is <em>not</em> supported in Delphi).
The time must consist of 1 to 4 digits, 
separated by the <var>TimeSeparator</var> character. If two numbers are given, they
are supposed to form the hour and minutes.
</p>
          <p>The function returns <var>True</var> if the string contained a valid date and time indication,
<var>False</var> otherwise.
</p>
        </descr>
        <seealso>
          <link id="TryStrToDate"/>
          <link id="TryStrToTime"/>
          <link id="StrToDateTime"/>
          <link id="StrToTime"/>
          <link id="DateToStr"/>
          <link id="TimeToStr"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="CurrentYear">
        <short>Return the current year</short>
        <descr>
          <var>CurrentYear</var> returns the current year as a 4-digit number.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="Date"/>
          <link id="Time"/>
          <link id="Now"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="StrToQWord">
        <short>Convert a string to a QWord.</short>
        <descr>
          <var>TryStrToQWord</var> converts the string <var>S</var> to a valid QWord (unsigned 64-bit) value, 
and returns the result.
</descr>
        <errors>If the string <var>S</var> does not contain a valid QWord value, a <link id="EConvertError"/> exception is raised.
</errors>
        <seealso>
          <link id="TryStrToQWord"/>
          <link id="StrToQWordDef"/>
          <link id="StrToInt64"/>
          <link id="StrToInt"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="TryStrToQWord">
        <short>Try to convert a string to a QWord value, and report on success</short>
        <descr>
          <var>TryStrToQWord</var> tries to convert the string <var>S</var> to a valid QWord (unsigned 64-bit) value, 
and stores the result in <var>I</var>. If the conversion fails, the function returns <var>False</var>, 
else it returns <var>True</var>.
</descr>
        <seealso>
          <link id="StrToQWord"/>
          <link id="StrToQWordDef"/>
          <link id="TryStrToInt64"/>
          <link id="TryStrToInt"/>
        </seealso>
      </element>
      <element name="TryStrQWord">
        <short>Alias for <link id="#rtl.sysutils.trystrtoqword">TryStrToQWord</link>.</short>
        <descr>
          <var>TryStrToQWord</var> is a backward-compatibility alias for <link id="TryStrToQWord"/>.
</descr>
        <seealso>
          <link id="TryStrToQWord"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="StrToQWordDef">
        <short>Try to convert a string to a QWord, returning a default value in case of failure.</short>
        <descr>
          <var>StrToQWordDef</var> tries to convert the string <var>S</var> to a valid QWord (unsigned 64-bit) value,
and returns the result. If the conversion fails, the function returns the value passed in <var>Def</var>.
</descr>
        <seealso>
          <link id="StrToQWord"/>
          <link id="TryStrToQWord"/>
          <link id="StrToInt64Def"/>
          <link id="StrToIntDef"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="CurrToStrF">
        <short>Format a currency to a string</short>
        <descr>
          <var>CurrToStrF</var> formats the currency <var>Value</var> according to the value in <var>Format</var>, using 
the number of digits specified in <var>Digits</var>, and a precision of 19. This function simply calls <link id="FloatToStrF"/>.
</descr>
        <seealso>
          <link id="FloatToStrF"/>
        </seealso>
      </element>
      <element name="SScanf">
        <short>Scan a string for substrings and return the substrings</short>
        <descr>
          <p>
            <var>SSCanF</var> scans the string <var>S</var> for the elements specified in <var>Fmt</var>, 
and returns the elements in the pointers in <var>Pointers</var>. The <var>Fmt</var> can 
contain placeholders of the form <var>%X</var> where <var>X</var> can be one of the 
following characters:
</p>
          <dl>
            <dt>d</dt>
            <dd>Placeholder for a decimal number.</dd>
            <dt>f</dt>
            <dd>Placeholder for a floating point number (an extended)</dd>
            <dt>s</dt>
            <dd>Placeholder for a string of arbitrary length.</dd>
            <dt>c</dt>
            <dd>Placeholder for a single character</dd>
          </dl>
          <p>The <var>Pointers</var> array contains a list of pointers, each pointer should point to a 
memory location of a type that corresponds to the type of placeholder in that position:
</p>
          <dl>
            <dt>d</dt>
            <dd>A pointer to an integer.</dd>
            <dt>f</dt>
            <dd>A pointer to an extended.</dd>
            <dt>s</dt>
            <dd>A pointer to an ansistring.</dd>
            <dt>c</dt>
            <dd>A pointer to a single character.</dd>
          </dl>
        </descr>
        <errors>No error checking is performed on the type of the memory location.
</errors>
        <seealso>
          <link id="Format"/>
        </seealso>
      </element>
      <!-- pointer type Visibility: default -->
      <element name="PSysCharSet">
        <short>Pointer to <link id="#rtl.sysutils.TSysCharSet">TSysCharSet</link> type.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="LongRec.Lo">
        <short>Lower byte</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="LongRec.Hi">
        <short>Upper byte</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="LongRec.Bytes">
        <short>Array of 4 bytes.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="Int64Rec.Lo">
        <short>Lower integer</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="Int64Rec.Hi">
        <short>High integer</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="Int64Rec.Words">
        <short>Array of 4 words</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="Int64Rec.Bytes">
        <short>Array of 8 bytes</short>
      </element>
      <!-- object Visibility: default -->
      <element name="EBusError">
        <short>Bus error exception</short>
        <descr>
          <var>EBusError</var> is raised in case of a bus error.
</descr>
      </element>
      <!-- object Visibility: default -->
      <element name="EFormatError">
        <short>Formatting error exception</short>
        <descr>
          <var>EformatError</var> is raised in case of an error in one of the various <link id="Format"/> functions.
</descr>
        <seealso>
          <link id="Format"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="ExceptFrameCount">
        <short>Number of frames included in an exception backtrace</short>
        <descr>
          <var>ExceptFrameCount</var> returns the number of frames that are included in an exception
stack frame backtrace. The function returns 0 if there is currently no exception being handled.
(i.e. it only makes sense to call this function in an <var>finally..end</var> or 
<var>except..end</var> block.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="ExceptFrames"/>
          <link id="ExceptAddr"/>
          <link id="ExceptObject"/>
          <link id="ExceptProc"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="ExceptFrames">
        <short/>
        <descr/>
        <errors/>
        <seealso>
          <link id="ExceptFrameCount"/>
          <link id="ExceptAddr"/>
          <link id="ExceptObject"/>
          <link id="ExceptProc"/>
        </seealso>
      </element>
      <!-- function type Visibility: default -->
      <element name="TCreateGUIDFunc">
        <short>Callback prototype to create GUIDs</short>
        <descr>
          <var>TCreateGUIDFunc</var> is the prototype for a GUID creation handler. 
On return, the <var>GUID</var> argument should contain a new (unique) GUID.
The return value of the function should be zero for success, nonzero for failure.
</descr>
        <seealso>
          <link id="OnCreateGUID"/>
        </seealso>
      </element>
      <!-- variable Visibility: default -->
      <element name="OnCreateGUID">
        <short>Callback to create GUID values</short>
        <descr>
          <var>OnCreateGUID</var> can be set to point to a custom routine that creates GUID 
values. If set, the <link id="CreateGUID"/> function will use it to obtain a GUID 
value. If it is not set, a default implementation using random values will be used
to create the unique value. The function should return a valid GUID in the 
<var>GUID</var> parameter, and should return zero in case of success.
</descr>
        <seealso>
          <link id="CreateGUID"/>
          <link id="TCreateGUIDFunc"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="CreateGUID">
        <short>Create a new GUID</short>
        <descr>
          <p>
            <var>CreateGUID</var> can be called to create a new GUID (Globally Unique Identifier) value.
The function returns the new <var>GUID</var> value in <var>GUID</var> and returns zero in 
case the GUID was created succesfully. If no GUID was created, a nonzero error code is returned.
</p>
          <p>The default mechanism for creating a new GUID is system dependent. If operating system support 
is available, it is used. If none is available, a default implementation using random numbers 
is used.
</p>
          <p>The <var>OnCreateGUID</var> callback can be set to hook a custom mechanism behind the 
<var>CreateGUID</var> function. This can be used to lt the GUID be created by an 
external GUID creation library. 
</p>
        </descr>
        <errors>On error, a nonzero return value is returned.
</errors>
        <seealso>
          <link id="GUIDCase"/>
          <link id="IsEqualGUID"/>
          <link id="StringToGUID"/>
          <link id="TryStringToGUID"/>
          <link id="GUIDToString"/>
        </seealso>
      </element>
      <!-- variable Visibility: default -->
      <element name="TextRec.LineEnd">
        <short>Line ending used when writing to this text file.</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="MAX_PATH">
        <short>Maximum length of a fully qualified filename (including path)</short>
        <descr>
          <var>MAX_PATH</var> is the maximum number of characters that a filename (including path) 
can contain on the current operating system.
</descr>
      </element>
      <!-- constant Visibility: default -->
      <element name="ListSeparator">
        <short>Separator character for lists</short>
        <descr>
          <var>ListSeparator</var> is the character used in lists of values. It is locale dependent.
</descr>
        <seealso>
          <link id="DecimalSeparator"/>
        </seealso>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSearchRec.Mode">
        <short>Unix File mode. Only used on Unix systems.</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSearchRec.PathOnly">
        <short>Path component of the file</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="faSymLink">
        <short>File is a symlink</short>
        <descr>
          <var>faSymLink</var> means the file (as returned e.g. by <link id="FindFirst"/>/<link id="FindNext"/>), is a symlink.
It's ignored under Windows.
</descr>
        <seealso>
          <link id="FindFirst"/>
          <link id="FindNext"/>
          <link id="TSearchRec"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="feInvalidHandle">
        <short>FileOpen error value</short>
        <descr>
          <var>feInvalidHandle</var> is the return value of <link id="FileOpen"/> in case of an error.
</descr>
        <seealso>
          <link id="FileOpen"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="IReadWriteSync">
        <short>Read/Write synchronizer</short>
        <descr>
          <var>IReadWriteSync</var> is an interface for synchronizing read/write operations. 
Writers are always guaranteed to have exclusive access: readers may or may not have 
simultaneous access, depending on the implementation.
</descr>
      </element>
      <!-- procedure Visibility: default -->
      <element name="IReadWriteSync.BeginRead">
        <short>Start a read operation.</short>
        <descr>
          <p>
            <var>BeginRead</var> indicates that a read operation is about to be started. 
If a write operation is in progress, then the call will block untill the write 
operation finished. Depending on the implementation the call may also block if
another read operation is in progress.
</p>
          <p>After <var>BeginRead</var>, any write operation started with 
<link id="IReadWriteSync.BeginWrite">BeginWrite</link> will block until
<link id="IReadWriteSync.EndRead">EndRead</link> is called.
</p>
        </descr>
        <seealso>
          <link id="IReadWriteSync.EndRead"/>
          <link id="IReadWriteSync.BeginWrite"/>
          <link id="IReadWriteSync.EndWrite"/>
        </seealso>
      </element>
      <!-- procedure Visibility: default -->
      <element name="IReadWriteSync.EndRead">
        <short>End a read operation</short>
        <descr>
          <var>EndRead</var> signals the end of a read operation. 
If there was any blocked write operation, that will be unblocked by a call to <var>EndRead</var>.
</descr>
        <seealso>
          <link id="IReadWriteSync.BeginRead"/>
          <link id="IReadWriteSync.BeginWrite"/>
          <link id="IReadWriteSync.EndWrite"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="IReadWriteSync.BeginWrite">
        <short>Start a write operation.</short>
        <descr>
          <var>BeginWrite</var> signals the begin of a write operation. 
This call will block if any other read or write operation is currently in progress. 
It will resumt only after all other read or write operations have finished.
</descr>
        <seealso>
          <link id="IReadWriteSync.EndRead"/>
          <link id="IReadWriteSync.EndWrite"/>
          <link id="IReadWriteSync.BeginRead"/>
        </seealso>
      </element>
      <!-- procedure Visibility: default -->
      <element name="IReadWriteSync.EndWrite">
        <short>End a write operation.</short>
        <descr>
          <var>EndWrite</var> signals the end of a write operation. 
After the call to <var>EndWrite</var> any other read or write operations can start.
</descr>
        <seealso>
          <link id="IReadWriteSync.EndRead"/>
          <link id="IReadWriteSync.EndWrite"/>
          <link id="IReadWriteSync.BeginRead"/>
        </seealso>
      </element>
      <!-- object Visibility: default -->
      <element name="TMultiReadExclusiveWriteSynchronizer">
        <short>Standard implementation of a <link id="#rtl.sysutils.IReadWriteSync">IReadWriteSync</link> interface</short>
        <descr>
          <var>TMultiReadExclusiveWriteSynchronizer</var> is a default implementation of the
<link id="IReadWriteSync"/> interface. It uses a single mutex to protect access to the 
read/write resource, resulting in a single thread having access to the resource.
</descr>
        <seealso>
          <link id="IReadWriteSync"/>
        </seealso>
      </element>
      <!-- constructor Visibility: public -->
      <element name="TMultiReadExclusiveWriteSynchronizer.Create">
        <short>Create a new instance of the <var>TMultiReadExclusiveWriteSynchronizer</var> class</short>
        <descr>
          <var>Create</var> creates a new instance of <var>TMultiReadExclusiveWriteSynchronizer</var>. It
initializes a <var>TRTLCriticalSection</var>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="#rtl.system.TRTLCriticalSection">TRTLCriticalSection</link>
        </seealso>
      </element>
      <!-- destructor Visibility: public -->
      <element name="TMultiReadExclusiveWriteSynchronizer.Destroy">
        <short>Destroys the <var>TMultiReadExclusiveWriteSynchronizer</var> instance</short>
        <descr>
          <var>Create</var> destroys the instance of <var>TMultiReadExclusiveWriteSynchronizer</var>. 
It frees the <var>TRTLCriticalSection</var> it initialized, and calls the inherited destructor.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="#rtl.system.TRTLCriticalSection">TRTLCriticalSection</link>
        </seealso>
      </element>
      <!-- function Visibility: public -->
      <element name="TMultiReadExclusiveWriteSynchronizer.Beginwrite">
        <short>Request write access to the resource.</short>
        <descr>
          <var>Beginwrite</var> is the implementation of <var>IReadWriteSync.BeginWrite</var>. 
It simply enters the critical section, and returns <var>True</var>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="IReadWriteSync.BeginWrite"/>
          <link id="TMultiReadExclusiveWriteSynchronizer.EndWrite">EndWrite</link>
        </seealso>
      </element>
      <!-- procedure Visibility: public -->
      <element name="TMultiReadExclusiveWriteSynchronizer.Endwrite">
        <short>Release write access to the resource</short>
        <descr>
          <var>Beginwrite</var> is the implementation of <var>IReadWriteSync.EndWrite</var>.
It simply leaves the critical section.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="IReadWriteSync.EndWrite"/>
          <link id="TMultiReadExclusiveWriteSynchronizer.BeginWrite">BeginWrite</link>
        </seealso>
      </element>
      <!-- procedure Visibility: public -->
      <element name="TMultiReadExclusiveWriteSynchronizer.BeginRead">
        <short>Request read access to the resource</short>
        <descr>
          <var>BeginRead</var> is the implementation of <var>IReadWriteSync.BeginRead</var>.
It simply attempts to enter the critical section.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="IReadWriteSync.BeginRead"/>
          <link id="TMultiReadExclusiveWriteSynchronizer.EndRead">EndRead</link>
        </seealso>
      </element>
      <!-- procedure Visibility: public -->
      <element name="TMultiReadExclusiveWriteSynchronizer.Endread">
        <short>Release read access to the resource</short>
        <descr>
          <var>EndRead</var> is the implementation of <var>IReadWriteSync.EndRead</var>.
It simply leaves the critical section.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="IReadWriteSync.EndRead"/>
          <link id="TMultiReadExclusiveWriteSynchronizer.BeginRead">BeginRead</link>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="Supports">
        <short>Check whether a class or given interface supports an interface </short>
        <descr>
          <var>Supports</var> checks whether <var>Instance</var> supports the interface identified by
<var>IID</var>. It returns <var>True</var> if it is supported, <var>False</var>. 
Optionally, a pointer to the interface is returned to <var>Intf</var>.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StringToGUID"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="StringToGUID">
        <short>Convert a string to a native <var>TGUID</var> type.</short>
        <descr>
          <p>
            <var>StringToGUID</var> converts the string <var>S</var> to a valid GUID. The string <var>S</var> should 
be of the form
</p>
          <pre>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
</pre>
          <p>Where each X is a hexadecimal digit. The dashes and braces are required.
</p>
        </descr>
        <errors>In case <var>S</var> contains an invalid GUID representation, a <link id="EConvertError"/> exception is raised.
</errors>
        <seealso>
          <link id="Supports"/>
          <link id="#rtl.system.TGUID"/>
          <link id="GUIDToString"/>
          <link id="IsEqualGuid"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="GUIDToString">
        <short>Convert a <var>TGUID</var> to a string representation.</short>
        <descr>
          <p>
            <var>GUIDToString</var> converts the GUID identifier in <var>GUID</var> to a string representation in the form
</p>
          <pre>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
</pre>
          <p>Where each <var>X</var> is a hexadecimal digit.
</p>
        </descr>
        <errors>None.
</errors>
        <seealso>
          <link id="Supports"/>
          <link id="#rtl.system.TGUID"/>
          <link id="StringToGUID"/>
          <link id="IsEqualGuid"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="IsEqualGUID">
        <short>Check whether two <var>TGUID</var> variables are equal.</short>
        <descr>
          <var>IsEqualGUID</var> checks whether <var>guid1</var> and <var>guid2</var> are equal, 
and returns <var>True</var> if this is the case, or <var>False</var> otherwise.
</descr>
        <errors/>
        <seealso>
          <link id="Supports"/>
          <link id="#rtl.system.TGUID"/>
          <link id="StringToGUID"/>
          <link id="GuidToString"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="SafeLoadLibrary">
        <short>Load a library safely</short>
        <descr>
          <var>SafeLoadLibrary</var> saves and restores some registers before and 
after issuing a call to <var>LoadLibrary</var>.
</descr>
        <errors>None.
</errors>
      </element>
      <!-- constant Visibility: default -->
      <element name="RTL_SIGINT">
        <short>INTERRUPT signal number (Unix only)</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="RTL_SIGFPE">
        <short>Floating Point Error signal number (Unix only)</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="RTL_SIGSEGV">
        <short>Segmentation fault signal number (Unix only)</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="RTL_SIGILL">
        <short>Illegal instruction signal number (Unix only)</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="RTL_SIGBUS">
        <short>Bus error signal number (Unix only)</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="RTL_SIGQUIT">
        <short>QUIT signal number (Unix only)</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="RTL_SIGLAST">
        <short>Last signal number (Unix only)</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="RTL_SIGDEFAULT">
        <short>Default signal handler (Unix only)</short>
      </element>
      <!-- enumeration type Visibility: default -->
      <element name="TSignalState">
        <short>State of the signal handler (unix only)</short>
        <descr>
          <var>TSignalState</var> indicates the state of a signal handler in a unix system for a particular signal.
</descr>
        <seealso>
          <link id="InquireSignal"/>
        </seealso>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TSignalState.ssNotHooked">
        <short>No signal handler is set for the signal.</short>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TSignalState.ssHooked">
        <short>A signal handler is set by the RTL code for the signal.</short>
      </element>
      <!-- enumeration value Visibility: default -->
      <element name="TSignalState.ssOverridden">
        <short>A signal handler was set for the signal by third-party code.</short>
      </element>
      <!-- function Visibility: default -->
      <element name="InquireSignal">
        <short>Check whether a signal handler is set (unix only)</short>
        <descr>
          <p>
            <var>RtlSigNum</var> will check whether the signal <var>RtlSigNum</var> is
being handled, and by whom. It returns a <var>TSignalState</var> result to
report the state of the signal, which can be one of the following values:
</p>
          <dl>
            <dt>ssNotHooked</dt>
            <dd>
              <printshort id="TSignalState.ssNotHooked"/>
            </dd>
            <dt>ssHooked</dt>
            <dd>
              <printshort id="TSignalState.ssHooked"/>
            </dd>
            <dt>ssOverridden</dt>
            <dd>
              <printshort id="TSignalState.ssOverridden"/>
            </dd>
          </dl>
          <p>This routine works by resetting the signal handlers, so it is risky to call.
</p>
        </descr>
      </element>
      <!-- procedure Visibility: default -->
      <element name="AbandonSignalHandler">
        <short>Abandon the signal handler</short>
        <descr>
          <var>AbandonSignalHandler</var> tells the system routines that they should
not re-install the signal handler for signal <var>RtlSigNum</var> under any 
circumstances. Normally, signal handlers are re-set when they are called. 
If <var>AbandonSignalHandler</var> has been called for a signal that is 
handled by the system code, the signal will not be re-set again.
</descr>
      </element>
      <!-- procedure Visibility: default -->
      <element name="HookSignal">
        <short>Hook a specified signal</short>
        <descr>
          <var>HookSignal</var> installs the RTL default signal handler for signal
<var>RtlSigNum</var>. It does not check whether the signal is already
handled, and should therefor only be called if <var>InquireSignal</var>
returns <var>ssNotHooked</var>.
</descr>
      </element>
      <!-- procedure Visibility: default -->
      <element name="UnhookSignal">
        <short>UnHook a specified signal</short>
        <descr>
          <var>UnHookSignal</var> de-installs the RTL default signal handler for signal
<var>RtlSigNum</var>. If <var>OnlyIfHooked</var> is <var>True</var> then
<var>UnhookSignal</var> will first check if the signal was hooked by the RTL
routines, and has not been overridden since.
</descr>
      </element>
      <!-- record type Visibility: default -->
      <element name="TFormatSettings">
        <short>Record with all the strings that determine formatting</short>
        <descr>
          <var>TFormatSettings</var> is a record that contains a copy of all
variables which determine formatting in the various string formatting routines.
It is used to pass local copies of these values to the various formatting 
routines in a thread-safe way.
</descr>
        <seealso>
          <link id="Format"/>
          <link id="FormatDateTime"/>
          <link id="FormatFloat"/>
        </seealso>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.CurrencyFormat">
        <short>Currency format string</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.NegCurrFormat">
        <short>Negative currency format string</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.ThousandSeparator">
        <short>Thousands separator character</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.DecimalSeparator">
        <short>Decimal separator character</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.CurrencyDecimals">
        <short>Currency decimals</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.DateSeparator">
        <short>Date separator character</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.TimeSeparator">
        <short>Time separator character</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.ListSeparator">
        <short>List separator character</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.CurrencyString">
        <short>Currency string</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.ShortDateFormat">
        <short>Short date format string</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.LongDateFormat">
        <short>Long Date Format string</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.TimeAMString">
        <short>AM time indicator string</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.TimePMString">
        <short>PM time indicator string</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.ShortTimeFormat">
        <short>Short time format string</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.LongTimeFormat">
        <short>Long time format string</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.ShortMonthNames">
        <short>Array with short month names</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.LongMonthNames">
        <short>Array with long month names</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.ShortDayNames">
        <short>Array with short day names</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.LongDayNames">
        <short>Long day names</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TFormatSettings.TwoDigitYearCenturyWindow">
        <short>Value for 2 digit year century window</short>
      </element>
      <!-- unresolved type reference Visibility: default -->
      <element name="Unix">
        <short>Unix calls (unix implementation only)</short>
      </element>
      <!-- unresolved type reference Visibility: default -->
      <element name="errors">
        <short>Error descriptions</short>
      </element>
      <!-- unresolved type reference Visibility: default -->
      <element name="sysconst">
        <short>Resource strings</short>
      </element>
      <!-- unresolved type reference Visibility: default -->
      <element name="Unixtype">
        <short>Basic unix types</short>
      </element>
      <!-- function Visibility: default -->
      <element name="ComposeDateTime">
        <short>Add a date and time</short>
        <descr>
          <var>ComposeDateTime</var> correctly adds <var>Date</var> and <var>Time</var>, also for dates before 1899-12-31. For dates after this date, 
it is just the mathematical addition.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="EncodeDateTime"/>
        </seealso>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSysLocale.DefaultLCID">
        <short>Default locale ID</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSysLocale.PriLangID">
        <short>Primary language ID</short>
      </element>
      <!-- variable Visibility: default -->
      <element name="TSysLocale.SubLangID">
        <short>Sub-language ID</short>
      </element>
      <!-- array type Visibility: default -->
      <element name="TMonthNameArray">
        <short>Array type for array of month variables</short>
        <descr>
          <var>TMonthNameArray</var> is used in the month long and short name arrays.
</descr>
        <seealso>
          <link id="DefaultFormatSettings"/>
          <link id="ShortMonthNames"/>
          <link id="LongMonthNames"/>
        </seealso>
      </element>
      <!-- array type Visibility: default -->
      <element name="TWeekNameArray">
        <short/>
        <descr>
          <var>TWeekNameArray</var> is used in the day long and short name arrays.
</descr>
        <seealso>
          <link id="DefaultFormatSettings"/>
          <link id="ShortDayNames"/>
          <link id="LongDayNames"/>
        </seealso>
      </element>
      <!-- variable Visibility: default -->
      <element name="DefaultFormatSettings">
        <short>Storage for default settings</short>
        <descr>
          <p>
            <var>DefaultFormatSettings</var> contains the default settings for all
type of formatting constants. If no thread-specific values are specified
when a formatting function is called, this record is used as a default.
</p>
          <p>All other formatting constants refer to the fields of this variable using 
absolute addressing.
</p>
        </descr>
        <seealso>
          <link id="ShortMonthNames"/>
          <link id="LongMonthNames"/>
          <link id="ShortDayNames"/>
          <link id="LongDayNames"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="StrToDateDef">
        <short>Convert string to date, returning a default value</short>
        <descr>
          <var>StrToDateDef</var> tries to convert the string <var>S</var> to a valid
<var>TDateTime</var> date value, and returns <var>DefValue</var> if <var>S</var>
does not contain a valid date indication.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrToDate"/>
          <link id="TryStrToDate"/>
          <link id="StrToTimeDef"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="StrToTimeDef">
        <short>Convert string to time, returning a default value</short>
        <descr>
          <var>StrToTimeDef</var> tries to convert the string <var>S</var> to a valid
<var>TDateTime</var> time value, and returns <var>DefValue</var> if <var>S</var>
does not contain a valid time indication.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrToTime"/>
          <link id="TryStrToTime"/>
          <link id="StrToDateDef"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="StrToDateTimeDef">
        <short>Convert string to date/time, returning a default value</short>
        <descr>
          <var>StrToDateTimeDef</var> tries to convert the string <var>S</var> to a valid
<var>TDateTime</var> date and time value, and returns <var>DefValue</var> if
<var>S</var> does not contain a valid date-time indication.
</descr>
        <errors>None.
</errors>
        <seealso>
          <link id="StrToTimeDef"/>
          <link id="StrToDateDef"/>
          <link id="TryStrToDateTime"/>
          <link id="StrToDateTime"/>
        </seealso>
      </element>
      <!-- procedure Visibility: default -->
      <element name="ReplaceTime">
        <short>Replace the time part</short>
        <descr>
          <var>ReplaceTime</var> replaces the time part in <var>dati</var> with <var>NewTime</var>.
The date part remains untouched.
</descr>
        <errors/>
        <seealso/>
      </element>
      <!-- variable Visibility: default -->
      <element name="TrueBoolStrs">
        <short>
          <var>True</var> Strings used in <var>StrToBool</var> conversion</short>
        <descr>
          <var>TrueBoolStrs</var> contains the strings that will result in a 
<var>True</var> return value by <link id="StrToBool"/>.
</descr>
        <seealso>
          <link id="FalseBoolStrs"/>
          <link id="StrToBool"/>
        </seealso>
      </element>
      <!-- variable Visibility: default -->
      <element name="FalseBoolStrs">
        <short>
          <var>False</var> Strings used in <var>StrToBool</var> conversion</short>
        <descr>
          <var>FalseBoolStrs</var> contains the strings that will result in a
<var>False</var> return value by <link id="StrToBool"/>.
</descr>
        <seealso>
          <link id="FalseBoolStrs"/>
          <link id="StrToBool"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="AnsiDequotedStr">
        <short/>
        <descr/>
        <errors/>
        <seealso/>
      </element>
      <!-- function Visibility: default -->
      <element name="StrToBoolDef">
        <short>Convert string to boolean value, returning default in case of error</short>
        <descr>
          <var>StrToBoolDef</var> tries to convert the string <var>S</var> to a
boolean value, and returns the boolean value in case of success. In case
<var>S</var> does not contain a valid boolean string, <var>Default</var> is
returned.
</descr>
        <seealso>
          <link id="StrToBool"/>
          <link id="TryStrToBool"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="TryStrToBool">
        <short>Try to convert a string to a boolean value</short>
        <descr>
          <p>
            <var>TryStrToBool</var> tries to convert the string <var>S</var> to a
boolean value, and returns this value in <var>Value</var>. In this case, the
function returns <var>True</var>. If <var>S</var> does not contain a valid 
boolean string, the function returns <var>False</var>, and the contents of 
<var>Value</var> is indetermined.
</p>
          <p>Valid boolean string constants are in the <link id="FalseBoolStrs"/> (for
<var>False</var> values) and <link id="TrueBoolStrs"/> (for <var>True</var>
values) variables.
</p>
        </descr>
        <seealso>
          <link id="StrToBool"/>
          <link id="StrToBoolDef"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="VendorName">
        <short>Returns the application vendor name.</short>
        <descr>
          <var>VendorName</var> returns the application vendor name. 
This function does not do anything by itself, but uses
the <link id="OnGetVendorName"/> callback to get the 
application vendor name.
</descr>
        <errors>If <link id="OnGetVendorName"/>  is not set, an empty string is returned.
</errors>
        <seealso>
          <link id="OnGetVendorName"/>
          <link id="TGetVendorNameEvent"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="GetUserDir">
        <short>Returns the current user's home directory.</short>
        <descr>
          <p>
            <var>GetUserDir</var> returns the home directory of the current user.
On Unix-like systems (that includes Mac OS X), this is the value of the
HOME environment variable. On Windows, this is the PROFILE special folder.
On all other platforms, the application installation directory is returned.
</p>
          <p>If non-empty, it contains a trailing path delimiter.
</p>
        </descr>
        <seealso>
          <link id="GetAppConfigDir"/>
        </seealso>
      </element>
      <!-- function type Visibility: default -->
      <element name="TGetVendorNameEvent">
        <short>Prototype for <var>OnGetVendorName</var> event.</short>
        <descr>
          <var>TGetVendorNameEvent</var> is the function prototype for the <link id="OnGetVendorName"/> callback, used by the <link id="VendorName"/>
function.
</descr>
        <seealso>
          <link id="OnGetVendorName"/>
          <link id="VendorName"/>
        </seealso>
      </element>
      <!-- variable Visibility: default -->
      <element name="OnGetVendorName">
        <short>Callback for the <link id="#rtl.sysutils.VendorName">VendorName</link>
function.</short>
        <descr>
          <var>OnGetVendorName</var> is the callback used by the <link id="VendorName"/> function.
It should be set to a handler that returns the vendor of the application.
</descr>
        <seealso>
          <link id="TGetVendorNameEvent"/>
          <link id="VendorName"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="JulianEpoch">
        <short>Starting point of the Julian calendar</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="UnixEpoch">
        <short>Starting point of the unix calendar (1/1/1970)</short>
      </element>
      <!-- procedure Visibility: default -->
      <element name="IncAMonth">
        <short>Increase a date with a certain amount of months</short>
        <descr>
          <p>
            <var>IncAMonth</var> increases the date as specified by <var>Year</var>,
<var>Month</var>, <var>Day</var> with <var>NumberOfMonths</var>. It takes
care of the number of days in a month when calculating the result.
</p>
          <p>This function does the same as <link id="IncMonth"/>, but operates on an
already decoded date.
</p>
        </descr>
        <seealso>
          <link id="IncMonth"/>
        </seealso>
      </element>
      <!-- procedure Visibility: default -->
      <element name="ReplaceDate">
        <short>Replace the date part of a date/time stamp</short>
        <descr>
          <var>ReplaceDate</var> replaces the date part of <var>DateTime</var> with
<var>NewDate</var>. The time part is left unchanged.
</descr>
        <seealso>
          <link id="ReplaceTime"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="StrNextChar">
        <short>Returns a pointer to the location of the next empty character in a null-terminated string</short>
        <descr>
          <var>StrNextChar</var> returns a pointer to the null-character that terminates
the string <var>Str</var>
        </descr>
        <errors>if <var>Str</var> is not properly terminated, an access violation may occur.
</errors>
      </element>
      <!-- function Visibility: default -->
      <element name="ExtractShortPathName">
        <short>Returns a 8.3 path name</short>
        <descr>
          <var>ExtractShortPathName</var> returns a 8.3 compliant filename that
represents the same file as <var>FileName</var>. On platforms other than
windows, this is <var>FileName</var> itself.
</descr>
        <seealso>
          <link id="ExtractFilePath"/>
          <link id="ExtractFileName"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="GetModuleName">
        <short>Return the name of the current module</short>
        <descr>
          <p>
            <var>GetModuleName</var> returns the name of the current module. On windows,
this is the name of the executable when executed in an executable, or the
name of the library when executed in a library.
</p>
          <p>On all other platforms, the result is always empty, since they provide no
such functionality.
</p>
        </descr>
      </element>
      <!-- constant Visibility: default -->
      <element name="pfExeModule">
        <short>Package is an executable</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="pfNeverBuild">
        <short>Never-build flag was specified when compiling package</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="pfDesignOnly">
        <short>Package is a design-time only package</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="pfRunOnly">
        <short>Package is a run-time only package</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="pfIgnoreDupUnits">
        <short>Ignore duplicate units in package</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="pfPackageModule">
        <short>Package is a real package (not exe)</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="pfModuleTypeMask">
        <short>Mask for module type flags</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="pfV3Produced">
        <short>Not used in Free Pascal.</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="pfProducerUndefined">
        <short>Not used in Free Pascal.</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="pfBCB4Produced">
        <short>Not used in Free Pascal.</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="pfDelphi4Produced">
        <short>Not used in Free Pascal.</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="pfLibraryModule">
        <short>Package is a library</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="pfProducerMask">
        <short>Mask for producer flags</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="ufMainUnit">
        <short>Unit is the main unit of the package</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="ufPackageUnit">
        <short>Unit is a packaged unit (appeared in package contains list)</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="ufWeakUnit">
        <short>Unit is a weak packaged unit</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="ufOrgWeakUnit">
        <short>Unit is the original weak packaged unit</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="ufImplicitUnit">
        <short>Unit was implicitly imported into package (did not appear in package contains list)</short>
      </element>
      <!-- constant Visibility: default -->
      <element name="ufWeakPackageUnit">
        <short>Weak (original or not) packaged unit</short>
      </element>
      <element name="ENoWideStringSupport">
        <short>Exception raised if no widestring support is available in the executable</short>
        <descr>
          <var>ENoWideStringSupport</var> is the exception raised when a run-time 233
occurs, i.e. when widestring routines are called and the application does
not contain widestring support.
</descr>
      </element>
      <!-- procedure Visibility: public -->
      <element name="EHeapMemoryError.FreeInstance">
        <short>Free the exception instance</short>
        <descr>
          <var>FreeInstance</var> checks whether the exception instance may be freed prior to
calling the inherited <var>FreeInstance</var>. The exception is only freed
in case of normal program shutdown, if a heap error occured, the exception
instance is not freed.
</descr>
      </element>
      <!-- function Visibility: default -->
      <element name="ExeSearch">
        <short>Search for an executable</short>
        <descr>
          <p>
            <var>ExeSearch</var> searches for an executable <var>Name</var> in the list
of directories <var>DirList</var> (a list of directories, separator by
<link id="#rtl.system.PathSeparator">PathSeparator</link>. 
If the current OS also searches implicitly in the current working 
directory, the current directory is searched in the first place.
</p>
          <p>If the executable is found, then the full path of the executable is
returned. If it is not found, an empty string is returned.
</p>
          <p>No check is performed whether the found file is actually executable.
</p>
        </descr>
        <seealso>
          <link id="FileSearch"/>
        </seealso>
      </element>
      <!-- constant Visibility: default -->
      <element name="GUID_NULL">
        <short>NULL GUID constant</short>
      </element>
      <!-- function Visibility: default -->
      <element name="TryStringToGUID">
        <short>Try to transform a string to a GUID</short>
        <descr>
          <var>TryStringToGUID</var> tries to convert the string <var>S</var> to a TGUID
value, returned in <var>GUID</var>. It returns <var>True</var> if the
conversion succeeds, and <var>False</var> if the string  <var>S</var> does
not contain a valid GUID notation. The string <var>S</var> must be 38
characters long, must start with { and end on }, and contain a valid GUID
string (hex number grouped using 8-4-4-4-12 digits).
</descr>
        <errors>In case S does not contain a valid GUID number, <var>False</var> is returned.
</errors>
        <seealso>
          <link id="StringToGUID"/>
        </seealso>
      </element>
      <!-- function Visibility: default -->
      <element name="GuidCase">
        <short>Return the index of a GUID in an array of GUID values</short>
        <descr>
          <var>GuidCase</var> returns the index of <var>GUID</var> in the array
<var>List</var>, where 0 denotes the first element in the list. If GUID is
not present in the list, -1 is returned.
</descr>
        <seealso>
          <link id="IsEqualGUID"/>
        </seealso>
      </element>
    </module>
  </package>
</fpdoc-descriptions>
