home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / delphi / tstrclas.lzh / STRCLASS.INT < prev    next >
Text File  |  1995-11-11  |  24KB  |  479 lines

  1. UNIT StrClass;
  2.  
  3. { ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: }
  4.  
  5. { TStringClass : Version 2.0 - CopyRight of ICFM Software, London, UK }
  6.  
  7. { ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: }
  8.  
  9. INTERFACE
  10.  
  11. { ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: }
  12.  
  13. {$R StrClass.RES}
  14.  
  15. { ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: }
  16.  
  17. USES
  18.  
  19.    WinTypes,
  20.    WinProcs,
  21.    SysUtils,
  22.    Dialogs,
  23.    ContainR,
  24.    Controls;
  25.  
  26. { ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: }
  27.  
  28. CONST
  29.  
  30.    { id to test for WORD function results }
  31.    WordResError : WORD = $FFFF;
  32.  
  33.    { case usage constants }
  34.  
  35.    Ignore_Case = TRUE;
  36.    Use_Case    = FALSE;
  37.  
  38.    { string comparison function integer results }
  39.  
  40.    Compare_LT = -1;
  41.    Compare_EQ = 0;
  42.    Compare_GT = 1;
  43.  
  44.    { boolean to string conversion types }
  45.  
  46.    bt_NoYes     = 1;
  47.    bt_01        = 2;
  48.    bt_FalseTrue = 3;
  49.    bt_FT        = 4;
  50.    bt_NY        = 5;
  51.    bt_OffOn     = 6;
  52.    bt_Last      = 6;
  53.  
  54.    { special processing flags for delimiter parsing actions }
  55.  
  56.    delim_None    = 0;
  57.    delim_IncDIC  = 1;
  58.    delim_IncSIC  = 2;
  59.    delim_ExcDIC  = 4;
  60.    delim_ExcSIC  = 8;
  61.    delim_ExcNull = 16;
  62.  
  63.    { parameters for the 'FindBetween2Ch' function }
  64.  
  65.    fbc_DelSubStr   = TRUE;
  66.    fbc_LeaveSubStr = FALSE;
  67.  
  68.    fbc_IncDelims = TRUE;
  69.    fbc_ExcDelims = FALSE;
  70.  
  71.    { filesplit related id's }
  72.    fs_Directory = 1;
  73.    fs_Name      = 2;
  74.    fs_extension = 4;
  75.  
  76.    { base number indicator }
  77.    StrClassBaseZero : BOOLEAN = TRUE;
  78.  
  79.    { FromComponent index settings }
  80.    All_Items     = -1;
  81.    Selected_text = -2;
  82.  
  83.    { grep related constants }
  84.    grep_any          = '?';
  85.    grep_nextLiteral  = '\';
  86.    grep_optionStart  = '[';
  87.    grep_optionEnd    = ']';
  88.    grep_class        = ':';
  89.    grep_Alpha        = 'A';
  90.    grep_numeric      = 'D';
  91.    grep_alphaNumeric = 'N';
  92.    grep_Chcont0      = '*';
  93.    grep_Chcont1      = '+';
  94.    grep_ChOption     = '-';
  95.    grep_Not          = '!';
  96.  
  97. TYPE
  98.  
  99.    TStringClass = CLASS(TObject)
  100.       PRIVATE
  101.          { data members }
  102.          FBuffer  : PChar;
  103.          FMaxSize : WORD;
  104.          FLength  : WORD;
  105.          FSizeInc : WORD;
  106.          { private methods }
  107.          FUNCTION ArgsToList(CONST Args : ARRAY OF CONST;
  108.                              AList : TObjectContainer) : LONGINT;
  109.          FUNCTION AssignFromPChar(Source : PChar; Start : WORD) : PChar;
  110.          FUNCTION AssignMidPChar(Source : PChar; Start,Count : WORD) : PChar;
  111.          FUNCTION AssignLenPChar(Source : PChar; Len : WORD) : PChar;
  112.          FUNCTION AssignNLPChar(Source : PChar) : PChar;
  113.          FUNCTION AssignPadPChar(Source : PChar; Len : WORD; ACh : CHAR) : PChar;
  114.          FUNCTION AssignPChar(Source : PChar) : PChar;
  115.          FUNCTION AssignRightPChar(Source : PChar; Len : WORD) : PChar;
  116.          FUNCTION AssignString(CONST Source : STRING) : PChar;
  117.          FUNCTION AppendLenPChar(Source : PChar; Len : WORD) : PChar;
  118.          FUNCTION AppendMidPChar(Source : PChar; Start,Count : WORD) : PChar;
  119.          FUNCTION AppendNLPChar(Source : PChar) : PChar;
  120.          FUNCTION AppendPadPChar(Source : PChar; Len : WORD; ACh : CHAR) : PChar;
  121.          FUNCTION AppendPChar(Source : PChar) : PChar;
  122.          FUNCTION AppendRightPChar(Source : PChar; Len : WORD) : PChar;
  123.          FUNCTION AppendString(Source : STRING) : PChar;
  124.          FUNCTION AppendTClass(T : TClass) : PChar;
  125.          FUNCTION AppendTrimPChar(Source : PChar) : PChar;
  126.          FUNCTION AppendWithTabPChar(Source : PChar) : PChar;
  127.          FUNCTION PrependPChar(Source : PChar) : PChar;
  128.          FUNCTION ComparePChar(Other : PChar) : INTEGER;
  129.          FUNCTION CompareIPChar(Other : PChar) : INTEGER;
  130.          FUNCTION CompareLPChar(Other : PChar; Len : WORD) : INTEGER;
  131.          FUNCTION CompareLIPChar(Other : PChar; Len : WORD) : INTEGER;
  132.          FUNCTION InsertPChar(Source : PChar; Index : WORD) : PChar;
  133.          FUNCTION CanCat(Source : PChar; VAR Extra : WORD) : BOOLEAN;
  134.          FUNCTION CanCopy(Source : PChar; VAR Extra : WORD) : BOOLEAN;
  135.          FUNCTION ChkSizeInc(E : WORD) : WORD;
  136.          FUNCTION CompConv(I : INTEGER) : INTEGER;
  137.          PROCEDURE DisposeStr;
  138.          FUNCTION ExpandBy(ExtraLen : WORD) : BOOLEAN;
  139.          FUNCTION GetCh(w : WORD) : CHAR;
  140.          FUNCTION GetLength : WORD;
  141.          FUNCTION GetMaxSize : WORD;
  142.          FUNCTION GetPChar : PChar;
  143.          FUNCTION GetSizeInc : WORD;
  144.          FUNCTION GetString : STRING;
  145.          PROCEDURE SetBufferLen(NewLen : WORD);
  146.          PROCEDURE SetSizeInc(ASize : WORD);
  147.       PROTECTED
  148.          FUNCTION AppendTObject(T : TObject) : PChar; VIRTUAL;
  149.          PROCEDURE InitDataMembers; VIRTUAL;
  150.          FUNCTION DoAssignFrom(CONST Args : ARRAY OF CONST; Start : WORD) : PChar;
  151.          FUNCTION DoAssignMid(CONST Args : ARRAY OF CONST; Start,Count : WORD) : PChar;
  152.          FUNCTION DoAppendMid(CONST Args : ARRAY OF CONST; Start,Count : WORD) : PChar;
  153.          FUNCTION DoFirstNonSpaceCh(VAR ACh : CHAR) : WORD;
  154.          FUNCTION DoHasCh(ACh : CHAR; VAR Pos : WORD) : BOOLEAN;
  155.          FUNCTION DoIsCh(W : WORD; ACh : CHAR) : BOOLEAN;
  156.          FUNCTION DoLastNonSpaceCh(VAR ACh : CHAR) : WORD;
  157.          PROCEDURE DoSetCh(W : WORD; ACh : CHAR);
  158.          FUNCTION DoDelete(Index,Count : WORD) : PChar;
  159.          FUNCTION DoDeleteFrom(Index : WORD) : PChar;
  160.          FUNCTION DoInsert(CONST Args : ARRAY OF CONST; Index : WORD) : PChar;
  161.          FUNCTION DoInsertL(CONST Args : ARRAY OF CONST; Len,Index : WORD) : PChar;
  162.          FUNCTION DoFindBetween2Ch(FirstCh,
  163.                                    SecondCh        : CHAR;
  164.                                    StartFrom       : WORD;
  165.                                    VAR SubStrStart : WORD;
  166.                                    VAR SubStrLen   : WORD;
  167.                                    CutSubStr,
  168.                                    IncDelims       : BOOLEAN;
  169.                                    VAR ASubStr     : TStringClass) : BOOLEAN;
  170.          FUNCTION DoFindFirst(CONST SubArgs : ARRAY OF CONST; VAR P : WORD) : BOOLEAN;
  171.          FUNCTION DoFindFirstCh(ACh : CHAR; VAR P : WORD) : BOOLEAN;
  172.          FUNCTION DoFindLast(CONST SubArgs : ARRAY OF CONST; VAR P : WORD) : BOOLEAN;
  173.          FUNCTION DoFindLastCh(ACh : CHAR; VAR P : WORD) : BOOLEAN;
  174.          FUNCTION DoFindNext(CONST SubArgs : ARRAY OF CONST;
  175.                              StartPos : WORD;
  176.                              VAR NextPos : WORD) : BOOLEAN;
  177.          FUNCTION DoFindNextCh(ACh : CHAR; StartPos : WORD; VAR NextPos : WORD) : BOOLEAN;
  178.          FUNCTION DoFindPrev(CONST SubArgs : ARRAY OF CONST;
  179.                              StartPos : WORD; VAR PrevPos : WORD) : BOOLEAN;
  180.          FUNCTION DoFindPrevCh(ACh : CHAR; StartPos : WORD; VAR PrevPos : WORD) : BOOLEAN;
  181.          FUNCTION DoFirstParseDelim(CONST Args : ARRAY OF CONST;
  182.                                     DelimCh      : CHAR;
  183.                                     VAR DelimPos : WORD) : BOOLEAN;
  184.          FUNCTION DoNextParseDelim(CONST Args : ARRAY OF CONST;
  185.                                    DelimCh          : CHAR;
  186.                                    StartPos         : WORD;
  187.                                    VAR NextDelimPos : WORD) : BOOLEAN;
  188.       PUBLIC
  189.          { *** CONSTRUCTORS *** }
  190.          CONSTRUCTOR Create;
  191.          CONSTRUCTOR CreateSize(ASize: WORD);
  192.          CONSTRUCTOR CreateString(CONST Args : ARRAY OF CONST);
  193.          CONSTRUCTOR CreateStringNL(CONST Args : ARRAY OF CONST);
  194.          CONSTRUCTOR CreateBoolean(B : BOOLEAN; StrType : INTEGER);
  195.          { *** DESTRUCTOR *** }
  196.          DESTRUCTOR Destroy; OVERRIDE;
  197.          { *** COPY related *** }
  198.          FUNCTION Copy : POINTER; VIRTUAL;
  199.          PROCEDURE CopyFrom(Source : TStringClass);
  200.          { clearing methods }
  201.          PROCEDURE Clear;
  202.          PROCEDURE Empty;
  203.          { size related }
  204.          PROCEDURE RecalcLength;
  205.          { assign }
  206.          FUNCTION Assign(CONST Args : ARRAY OF CONST) : PChar;
  207.          FUNCTION AssignFrom(CONST Args : ARRAY OF CONST; Start : WORD) : PChar;
  208.          FUNCTION AssignLen(CONST Args : ARRAY OF CONST   ; Len : WORD) : PChar;
  209.          FUNCTION AssignMid(CONST Args : ARRAY OF CONST; Start,Count : WORD) : PChar;
  210.          FUNCTION AssignNL(CONST Args : ARRAY OF CONST) : PChar;
  211.          FUNCTION AssignPad(CONST Args : ARRAY OF CONST; Len : WORD; ACh : CHAR) : PChar;
  212.          FUNCTION AssignRight(CONST Args : ARRAY OF CONST; Len : WORD) : PChar;
  213.          FUNCTION AssignTrim(CONST Args : ARRAY OF CONST) : PChar;
  214.          { appending data to the data }
  215.          FUNCTION Append(CONST Args : ARRAY OF CONST) : PChar;
  216.          FUNCTION AppendBoolean(B : BOOLEAN; bt : INTEGER) : PChar;
  217.          FUNCTION AppendByte(B : BYTE) : PChar;
  218.          FUNCTION AppendCh(C : CHAR) : PChar;
  219.          FUNCTION AppendDIC(CONST Args : ARRAY OF CONST) : PChar;
  220.          FUNCTION AppendDouble(D : DOUBLE; Width,Places : BYTE) : PChar;
  221.          FUNCTION AppendDoubleTrim(D : DOUBLE) : PChar;
  222.          FUNCTION AppendExt(E : EXTENDED; Width,Places : BYTE) : PChar;
  223.          FUNCTION AppendExtTrim(E : EXTENDED) : PChar;
  224.          FUNCTION AppendLen(CONST Args : ARRAY OF CONST; Len : WORD) : PChar;
  225.          FUNCTION AppendLong(L : LONGINT) : PChar;
  226.          FUNCTION AppendMid(CONST Args : ARRAY OF CONST; Start,Count : WORD) : PChar;
  227.          FUNCTION AppendNL(CONST Args : ARRAY OF CONST) : PChar;
  228.          FUNCTION AppendPad(CONST Args : ARRAY OF CONST; Len : WORD; ACh : CHAR) : PChar;
  229.          FUNCTION AppendPtr(P : POINTER) : PChar;
  230.          FUNCTION AppendReal(R : REAL; Width,Places : BYTE) : PChar;
  231.          FUNCTION AppendRight(CONST Args : ARRAY OF CONST; Len : WORD) : PChar;
  232.          FUNCTION AppendSIC(CONST Args : ARRAY OF CONST) : PChar;
  233.          FUNCTION AppendTrim(CONST Args : ARRAY OF CONST) : PChar;
  234.          FUNCTION AppendWithTab(CONST Args : ARRAY OF CONST) : PChar;
  235.          FUNCTION NL : PChar;
  236.          FUNCTION NLAppend(CONST Args : ARRAY OF CONST) : PChar;
  237.          FUNCTION Prepend(CONST Args : ARRAY OF CONST) : PChar;
  238.          { *** Character/array element related *** }
  239.          FUNCTION FirstNonSpaceCh(VAR ACh : CHAR) : WORD;
  240.          FUNCTION HasCh(ACh : CHAR; VAR Pos : WORD) : BOOLEAN;
  241.          FUNCTION IsCh(W : WORD; ACh : CHAR) : BOOLEAN;
  242.          FUNCTION IsFirstCh(ACh : CHAR) : BOOLEAN;
  243.          FUNCTION IsLastCh(ACh : CHAR) : BOOLEAN;
  244.          FUNCTION LastNonSpaceCh(VAR ACh : CHAR) : WORD;
  245.          PROCEDURE RemoveLastCh;
  246.          PROCEDURE SetCh(W : WORD; ACh : CHAR);
  247.          { *** WITH OTHER DATA TYPES *** }
  248.          FUNCTION FromBoolean(B : BOOLEAN; bt : INTEGER) : PChar;
  249.          FUNCTION FromByte(B : BYTE) : PChar;
  250.          FUNCTION FromChar(C : CHAR) : PChar;
  251.          FUNCTION FromComponent(AComp : TWinControl) : PChar;
  252.          FUNCTION FromComponentItem(AComp : TWinControl; Idx : INTEGER) : PChar;
  253.          FUNCTION FromDouble(D : DOUBLE; Width,Places : BYTE) : PChar;
  254.          FUNCTION FromDoubleTrim(D : DOUBLE) : PChar;
  255.          FUNCTION FromExt(E : EXTENDED; Width,Places : BYTE) : PChar;
  256.          FUNCTION FromExtTrim(E : EXTENDED) : PChar;
  257.          FUNCTION FromLong(L : LONGINT) : PChar;
  258.          FUNCTION FromPtr(P : POINTER) : PChar;
  259.          FUNCTION FromReal(R : REAL; Width,Places : BYTE) : PChar;
  260.          FUNCTION FromRealTrim(R : REAL) : PChar;
  261.          FUNCTION FromRGB(C : TColorRef) : PChar;
  262.          FUNCTION HexFromByte(B : BYTE) : PChar;
  263.          FUNCTION HexFromLong(L : LONGINT) : PChar;
  264.          FUNCTION HexFromPtr(P : POINTER) : PChar;
  265.          FUNCTION HexFromWord(W : WORD) : PChar;
  266.          FUNCTION ToBoolean(VAR B : BOOLEAN) : BOOLEAN;
  267.          FUNCTION ToByte(VAR B : BYTE) : BOOLEAN;
  268.          FUNCTION ToChar(VAR C : CHAR) : BOOLEAN;
  269.          FUNCTION ToComponent(AComp : TWinControl) : BOOLEAN;
  270.          FUNCTION ToDouble(VAR D : DOUBLE) : BOOLEAN;
  271.          FUNCTION ToExt(VAR E : EXTENDED) : BOOLEAN;
  272.          FUNCTION ToInteger(VAR I : INTEGER) : BOOLEAN;
  273.          FUNCTION ToLong(VAR L : LONGINT) : BOOLEAN;
  274.          FUNCTION ToReal(VAR R : REAL) : BOOLEAN;
  275.          FUNCTION ToRGB(VAR C : TColorRef) : BOOLEAN;
  276.          FUNCTION ToWord(VAR W : WORD) : BOOLEAN;
  277.          { equivalent SysUtils type functions }
  278.          FUNCTION AppendStr(CONST S: string) : PChar;
  279.          FUNCTION UpperCase(CONST S: string) : PChar;
  280.          FUNCTION LowerCase(const S: string): PChar;
  281.          FUNCTION CompareStr(CONST S2: STRING): Integer;
  282.          FUNCTION CompareText(CONST S2: STRING): Integer;
  283.          FUNCTION AnsiUpperCase(CONST S : STRING) : PChar;
  284.          FUNCTION AnsiLowerCase(CONST S : STRING) : PChar;
  285.          FUNCTION AnsiCompareStr(CONST S2: STRING): Integer;
  286.          FUNCTION AnsiCompareText(CONST S2: STRING): Integer;
  287.          FUNCTION IsValidIdent: Boolean;
  288.          FUNCTION IntToStr(Value: Longint): PChar;
  289.          FUNCTION IntToHex(Value: Longint; Digits: Integer): PChar;
  290.          FUNCTION StrToInt : Longint;
  291.          FUNCTION StrToIntDef(Default: Longint): Longint;
  292.          FUNCTION LoadStr(Ident: Word): PChar;
  293.          FUNCTION FmtLoadStr(Ident: Word; CONST Args: ARRAY OF CONST): PChar;
  294.          FUNCTION Format(CONST Format: STRING; CONST Args: ARRAY OF CONST): PChar;
  295.          FUNCTION FloatToStr(Value: Extended): PChar;
  296.          FUNCTION FloatToStrF(Value: Extended; Format: TFloatFormat; Precision, Digits: Integer): PChar;
  297.          FUNCTION FormatFloat(const Format: STRING; Value: Extended): PChar;
  298.          FUNCTION StrToFloat : Extended;
  299.          { *** equivalent PChar type 'STRINGS' unit FUNCTIONs *** }
  300.          FUNCTION StrCat(Source : PChar) : PChar;
  301.          FUNCTION StrComp(Str2 : PChar) : INTEGER;
  302.          FUNCTION StrCopy(Source : PChar) : PChar;
  303.          FUNCTION StrECopy(Source : PChar) : PChar;
  304.          FUNCTION StrEnd : PChar;
  305.          FUNCTION StrIComp(Str2 : PChar) : INTEGER;
  306.          FUNCTION StrLCat(Source : PChar; MaxLen : WORD) : PChar;
  307.          FUNCTION StrLIComp(Str2 : PChar; MaxLen : WORD) : INTEGER;
  308.          FUNCTION StrLComp(Str2 : PChar; MaxLen : WORD) : INTEGER;
  309.          FUNCTION StrLCopy(Str2 : PChar; MaxLen : WORD) : INTEGER;
  310.          FUNCTION StrLen : WORD;
  311.          FUNCTION StrLower : PChar;
  312.          FUNCTION StrMove(Source : PChar; Count : WORD) : PChar;
  313.          FUNCTION StrPas : STRING;
  314.          FUNCTION StrPCopy(Source : STRING) : PChar;
  315.          FUNCTION StrPos(Str2 : PChar) : PChar;
  316.          FUNCTION StrRScan(Chr : CHAR) : PChar;
  317.          FUNCTION StrScan(Chr : CHAR) : PChar;
  318.          FUNCTION StrUpper : PChar;
  319.          { *** COMPARISON METHODS *** }
  320.          FUNCTION Compare(CONST Args : ARRAY OF CONST) : INTEGER;
  321.          FUNCTION CompareI(CONST Args : ARRAY OF CONST) : INTEGER;
  322.          FUNCTION CompareL(CONST Args : ARRAY OF CONST; Len : WORD) : INTEGER;
  323.          FUNCTION CompareLI(CONST Args : ARRAY OF CONST; Len : WORD) : INTEGER;
  324.          FUNCTION CompareLong(L : LONGINT) : INTEGER;
  325.          FUNCTION CompareDouble(D : DOUBLE) : INTEGER;
  326.          FUNCTION CompareExt(E : EXTENDED) : INTEGER;
  327.          FUNCTION IsSame(CONST Args : ARRAY OF CONST) : BOOLEAN;
  328.          FUNCTION IsSameI(CONST Args : ARRAY OF CONST) : BOOLEAN;
  329.          FUNCTION IsSameL(CONST Args : ARRAY OF CONST; Len : WORD) : BOOLEAN;
  330.          FUNCTION IsSameLI(CONST Args : ARRAY OF CONST; Len : WORD) : BOOLEAN;
  331.          FUNCTION Includes(CONST Args : ARRAY OF CONST) : BOOLEAN;
  332.          FUNCTION Within(CONST Args : ARRAY OF CONST) : BOOLEAN;
  333.          { *** TRIM related *** }
  334.          FUNCTION AddDIC : PChar;
  335.          FUNCTION AddSIC : PChar;
  336.          FUNCTION Delete(Index,Count : WORD) : PChar;
  337.          FUNCTION DeleteFrom(Index : WORD) : PChar;
  338.          FUNCTION Insert(CONST Args : ARRAY OF CONST; Index : WORD) : PChar;
  339.          FUNCTION InsertL(CONST Args : ARRAY OF CONST; Len,Index : WORD) : PChar;
  340.          FUNCTION PadCentre(NewLen : WORD; ACh : CHAR) : PChar;
  341.          FUNCTION PadEnd(NewLen : WORD; ACh : CHAR) : PChar;
  342.          FUNCTION PadFront(NewLen : WORD; ACh : CHAR) : PChar;
  343.          FUNCTION RemoveDIC : PChar;
  344.          FUNCTION RemoveSIC : PChar;
  345.          FUNCTION Trim : PChar;
  346.          FUNCTION TrimEnd : PChar;
  347.          FUNCTION TrimFront : PChar;
  348.          FUNCTION TrimZero : PChar;
  349.          { command line related }
  350.          FUNCTION FindCmdLine : PChar;
  351.          FUNCTION FindCmdLineAndParse(IncExeParam : BOOLEAN;
  352.                                       VAR AList   : TObjectContainer) : PChar;
  353.          FUNCTION FindCmdLineParam(Idx : INTEGER) : PChar;
  354.          { *** RESOURCE STRING LOADING *** }
  355.          FUNCTION AppendStringRes(Instance : THandle; Id : WORD) : PChar;
  356.          FUNCTION LoadStringRes(Instance : THandle; Id : WORD) : PChar;
  357.          { *** INI file related *** }
  358.          FUNCTION FindIniSectionKeywords(CONST IniFileArgs,
  359.                                                SectionArgs  : ARRAY OF CONST;
  360.                                          VAR   AList : TObjectContainer) : WORD;
  361.          FUNCTION ReadIniKeyword(CONST IniFileArgs : ARRAY OF CONST;
  362.                                  CONST SectionArgs : ARRAY OF CONST;
  363.                                  CONST KeyWordArgs : ARRAY OF CONST) : WORD;
  364.          FUNCTION WriteIniKeyword(CONST IniFileArgs : ARRAY OF CONST;
  365.                                   CONST SectionArgs : ARRAY OF CONST;
  366.                                   CONST KeyWordArgs : ARRAY OF CONST) : WORD;
  367.          { *** DOS PATH/FILE NAME RELATED *** }
  368.          FUNCTION AddBackSlash : PChar;
  369.          FUNCTION AddFilterDesc(CONST DescArgs,ExtArgs : ARRAY OF CONST) : PChar;
  370.          FUNCTION BuildPathName(CONST DirArgs,
  371.                                       FileNameArgs,
  372.                                       ExtArgs : ARRAY OF CONST) : PChar;
  373.          FUNCTION CreateDirectory : BOOLEAN;
  374.          FUNCTION DefaultExtension(CONST Args : ARRAY OF CONST) : PChar;
  375.          FUNCTION DirectoryExists : BOOLEAN;
  376.          FUNCTION DriveExists : BOOLEAN;
  377.          FUNCTION ExpandFileName : PChar;
  378.          FUNCTION FileExists : BOOLEAN;
  379.          FUNCTION FindCurrentDir : PChar;
  380.          FUNCTION FindRelPath(CONST StartDirArgs,EndDirArgs : ARRAY OF CONST) : PChar;
  381.          FUNCTION ForceExtension(CONST Args : ARRAY OF CONST) : PChar;
  382.          FUNCTION GetSystemDirectory : PChar;
  383.          FUNCTION GetWindowsDirectory : PChar;
  384.          FUNCTION HasBackSlash : BOOLEAN;
  385.          FUNCTION HasDrive : BOOLEAN;
  386.          FUNCTION HasExtension(VAR DotPos : WORD) : BOOLEAN;
  387.          FUNCTION HasFileName : BOOLEAN;
  388.          FUNCTION HasDirectory : BOOLEAN;
  389.          FUNCTION FileSplit(VAR ADirObj,ANameObj,AnExtObj : TStringClass) : WORD;
  390.          FUNCTION JustExtension(CONST Args : ARRAY OF CONST) : PChar;
  391.          FUNCTION JustFileName(CONST Args : ARRAY OF CONST) : PChar;
  392.          FUNCTION JustName(CONST Args : ARRAY OF CONST) : PChar;
  393.          FUNCTION JustDirectory(CONST Args : ARRAY OF CONST) : PChar;
  394.          FUNCTION RemoveDirectory : BOOLEAN;
  395.          FUNCTION SameDrive(CONST Args : ARRAY OF CONST) : BOOLEAN;
  396.          FUNCTION SameDirectory(CONST Args : ARRAY OF CONST) : BOOLEAN;
  397.          FUNCTION SameExtension(CONST Args : ARRAY OF CONST) : BOOLEAN;
  398.          FUNCTION SameFileName(CONST Args : ARRAY OF CONST) : BOOLEAN;
  399.          FUNCTION SameName(CONST Args : ARRAY OF CONST) : BOOLEAN;
  400.          FUNCTION SetCurDir : BOOLEAN;
  401.          { *** SEARCH RELATED FUNCTIONS *** }
  402.          FUNCTION ChCount(ACh : CHAR) : WORD;
  403.          FUNCTION FindBetween2Ch(FirstCh,
  404.                                  SecondCh        : CHAR;
  405.                                  StartFrom       : WORD;
  406.                                  VAR SubStrStart : WORD;
  407.                                  VAR SubStrLen   : WORD;
  408.                                  CutSubStr,
  409.                                  IncDelims       : BOOLEAN;
  410.                                  VAR ASubStr     : TStringClass) : BOOLEAN;
  411.          FUNCTION FindFirst(CONST SubArgs : ARRAY OF CONST; VAR P : WORD) : BOOLEAN;
  412.          FUNCTION FindFirstCh(ACh : CHAR; VAR P : WORD) : BOOLEAN;
  413.          FUNCTION FindLast(CONST SubArgs : ARRAY OF CONST; VAR P : WORD) : BOOLEAN;
  414.          FUNCTION FindLastCh(ACh : CHAR; VAR P : WORD) : BOOLEAN;
  415.          FUNCTION FindNext(CONST SubArgs : ARRAY OF CONST;
  416.                            StartPos : WORD;
  417.                            VAR NextPos : WORD) : BOOLEAN;
  418.          FUNCTION FindNextCh(ACh : CHAR; StartPos : WORD; VAR NextPos : WORD) : BOOLEAN;
  419.          FUNCTION FindPrev(CONST SubArgs : ARRAY OF CONST;
  420.                            StartPos : WORD; VAR PrevPos : WORD) : BOOLEAN;
  421.          FUNCTION FindPrevCh(ACh : CHAR; StartPos : WORD; VAR PrevPos : WORD) : BOOLEAN;
  422.          FUNCTION Grep(CONST SearchArgs : ARRAY OF CONST; VAR AList : TWordContainer) : WORD;
  423.          FUNCTION SubStrCount(CONST SubArgs : ARRAY OF CONST) : WORD;
  424.          { *** Case related *** }
  425.          FUNCTION FirstCharToUpper : PChar;
  426.          FUNCTION IsAlphaNumeric : BOOLEAN;
  427.          FUNCTION ToLower : PChar;
  428.          FUNCTION ToUpper : PChar;
  429.          { *** Search & replace related methods *** }
  430.          FUNCTION ReplaceAll(CONST OldArgs,NewArgs : ARRAY OF CONST) : PChar;
  431.          FUNCTION ReplaceChAll(OldCh,NewCh : CHAR) : PChar;
  432.          FUNCTION ReplaceChFirst(OldCh,NewCh : CHAR) : PChar;
  433.          FUNCTION ReplaceChLast(OldCh,NewCh : CHAR) : PChar;
  434.          FUNCTION ReplaceFirst(CONST OldArgs,NewArgs : ARRAY OF CONST) : PChar;
  435.          FUNCTION ReplaceLast(CONST OldArgs,NewArgs : ARRAY OF CONST) : PChar;
  436.          { *** PARSER RELATED *** }
  437.          FUNCTION FirstParseDelim(CONST Args : ARRAY OF CONST;
  438.                                   DelimCh      : CHAR;
  439.                                   VAR DelimPos : WORD) : BOOLEAN;
  440.          FUNCTION NextParseDelim(CONST Args : ARRAY OF CONST;
  441.                                  DelimCh          : CHAR;
  442.                                  StartPos         : WORD;
  443.                                  VAR NextDelimPos : WORD) : BOOLEAN;
  444.          FUNCTION ParseDelimCount(DelimCh : CHAR) : WORD;
  445.          FUNCTION ParseDelimToList(DelimCh   : CHAR;
  446.                                    Special   : INTEGER;
  447.                                    VAR AList : TObjectContainer) : WORD;
  448.          FUNCTION ParseMultiDelimToList(CONST DelimArgs : ARRAY OF CONST;
  449.                                         Special         : INTEGER;
  450.                                         VAR AList       : TObjectContainer) : WORD;
  451.          FUNCTION ParsePosToList(VAR PosArray;
  452.                                  PosCt : WORD;
  453.                                  VAR AList : TObjectContainer) : WORD;
  454.          { **** OBJECT PROPERTIES *** }
  455.          PROPERTY Ch[w : WORD] : CHAR READ GetCh;
  456.          PROPERTY Length : WORD READ GetLength;
  457.          PROPERTY MaxSize : WORD READ GetMaxSize;
  458.          PROPERTY SizeInc : WORD READ GetSizeInc WRITE SetSizeInc;
  459.          PROPERTY Text : STRING READ GetString;
  460.          PROPERTY ZString : PChar READ GetPChar;
  461.    END;
  462.  
  463. { ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: }
  464.  
  465.    EStringClass = class(Exception);
  466.  
  467. { ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: }
  468.  
  469.    FUNCTION GetScFunctionName(Id : WORD) : STRING;
  470.  
  471. { ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: }
  472.  
  473. VAR
  474.  
  475.    gSc : TStringClass;
  476.  
  477. { ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: }
  478.  
  479.