TrueName

TrueName

Standardizes the path designation by converting relative path to absolute

Syntax

      TrueName( <cPathDesignation> ) --> <cStandardizedPath>

Argument

<cPathDesignation> : Designates a path as a standard. It is assumed that it is in accordance with DOS rules.

Returns

<cStandardizedPath> : returns the standardized path whenever possible.

Description

Path designations are made for the drive as well as the path itself, with regard to the current position designation. With TrueName(), related path designations are changed around so that they relate to the root directory of a particular drive.

The function does not test to see if a path exists. If the designated path is not valid or the specified drive is unavailable, it returns a null string.

Note

Warning! Additional information is built into the path of network drives. Under PC-LAN/MS-NET, the path contains the designation:\\<ServerName>. Under Novell, \\<ServerName>\ <VolumeName> (see Examples).

Examples

      ? CurDir()                    // temp
      ? TrueName(".")                  // C:\temp
      DirChange( "\temp" )
      ? TrueName( "." )                // C:\temp
      DirChange( "dir1" )
      ? CurDir()                       // temp\dir1
      ? TrueName( "." )                // C:\temp\dir1
      ? TrueName( ".." )               // C:\temp

      .  Anything valid under DOS is acceptable:

         ? TrueName("..\..\TEST1\.\TEST2")      // e.g. "C:\TEST1\TEST2"

      .  In a Novell network, remove tokens 2 and 3, server name, and
         volume name:

         IF NNETWORK()
            cPath   := TrueName(cOldPath)
            cToken1 := TOKEN(cPath, ":\", 1)
            cToken2 := TOKEN(cPath, ":\", 2)
            cToken3 := TOKEN(cPath, ":\", 3)
            cPath   := cToken1 + AFTERATNUM(cToken2 + cToken3, cPath)
          ENDIF

Files

Lib is hbct

Seealso

TOKEN(), AFTERATNUM()

SetAtLike()

SetAtLike()

Determine scan behaviour in some string functions

Syntax

      SetAtLike ([<nMode>] [, <[@]cWildcard>]) --> nOldMode

Arguments

[<nMode>] :

       CT_SetAtLike_EXACT -> characters are compared exactly

       CT_SetAtLike_WILDCARD -> characters are compared using a wildcard character

       The default value is CT_SetAtLike_EXACT.

[<[@]cWildcard>] determines the character that is subsequently used as a wildcard character for substring scanning. The default value is “?”.

NEW: If this parameter is passed by reference [@], the current wildcard character is stored in <cWildcard>.

Returns

nOldMode old (if nMode is a numeric value) or current state of the switch

Description

In the following CT3 functions, strings are compared on a character base:

ATADJUST(), ATNUM(), AFTERATNUM(), BEFOREATNUM(), ATREPL(), NUMAT(), STRDIFF()

With the SetAtLike function, one can determine when characters are considered to match within these functions. If CT_SetAtLike_WILDCARD is set (e.g. “?”), then “?” matches every other character.

<nMode> can be one of the following values that are defined in ct.ch

 
      Definition            | Value 
      ----------------------|------ 
      CT_SetAtLike_EXACT    |   0 
      CT_SetAtLike_WILDCARD |   1

Compliance

This function is fully CT3 compatible, but allows to pass the second parameter by reference so that the current wildcard character can be determined.

Platforms

All

Files

Source is ctstr.c, header is ct.ch, library is ct3.

AtNum()

AtNum()

Returns the start position of the nth occurence of a substring in a string

Syntax

      AtNum (<cStringToMatch>, <cString>, [<nCounter>],
             [<nIgnore>] ) --> nPosition

Arguments

<cStringToMatch> is the substring scanned for <cString> is the scanned string

[<nCounter>] determines how many occurences are of <cStringToMatch> in <cString> are searched Default: search last occurence

[<nIgnore>] determines how many character from the start should be ignored in the search Default: 0

Returns

<nPosition> the position of the <nCounter>th occurence of <cStringToMatch> in <cString>. If such an occurence does not exist, 0 is returned.

Description

This function scans <cString> for <cStringToMatch>. After the <nCounter>th match (or the last one, depending on the value of <nCounter>) has been found, the position of that match will be returned. If there aren’t enough matches or there is no last match, 0 will be returned. After a match has been found, the function continues to scan after that match if the CSETATMUPA() switch is turned off, with the second character of the matched substring otherwise. The function will also consider the settings of SETATLIKE().

Examples

      ? AtNum( "!", "What is the answer ? 4 ! 5 !" ) // -> 28
      ? AtNum( "!", "What is the answer ? 4 ! 5 ?" ) // -> 24

Tests

      AtNum( "..", "..This..is..a..test!" ) == 14
      AtNum( "..", "..This..is..a..test!", 2 ) == 7
      AtNum( "..", "..This..is..a..test!", 2, 2 ) == 11

Compliance

AtNum() is compatible with CT3’s AtNum().

Platforms

All

Files

Source is AtNum.c, library is libct.

Seealso

AtNum(), AfterAtNum(), CSETATMUPA(), SETATLIKE()

CT_AFTERATNUM

 AFTERATNUM()
 Returns the remainder of the string after the nth appearance of a sequence

 Syntax

     AFTERATNUM(<cSearchFor>,<cString>,[<nCounter>],
        [<nIgnore>]) --> cString

 Arguments

     <cSearchFor>  Designates the string for which the function searches.

     <cString>  Designates the string to search.

     <nCounter>  Designates which occurrence of <cSearchFor> within
     <cString> is found.  The default value specifies the last occurrence in
     the search expression.

     <nIgnore>  Designates the number of characters that are eliminated
     from the search.  The default value ignores none (0).

 Returns

     AFTERATNUM() returns the remainder of the <cString> string from the
     first character after the nth (<nCounter>) occurrence of <cSearchFor>.
     If the last character in the sequence located is also the last character
     in the string being searched, then a null string is returned.

 Description

     This function finds the nth (<nCounter>) occurrence of <cSearchFor>
     within <cString> and returns the remainder of the string from the first
     position behind the located sequence.

     In order to determine the nth (<nCounter>) occurrence of <cSearchFor>,
     AFTERATNUM() searches from the left for each instance of this sequence.
     If CSETATMUPA() is off, then the search is continued after the last
     character of the sequence most recently found.  Otherwise the search is
     continued after the first character of the sequence most recently found.

 Note

     .  Implementing SETATLIKE() allows you to use wild card
        characters within <cSearchFor>.

 Examples

     .  Search a string for the last appearance of "aa" in two
        different ways:

        CSETATMUPA(.T.)
        ? AFTERATNUM("aa", "aBaaBaaX")   // "X"

        CSETATMUPA(.F.)
        ? AFTERATNUM("aa", "aBaaBaaX")   // "aX"

     .  Search a string for the third existing "xx" within the string,
        where the first four characters are ignored!  Notice the differing
        results, depending on the multi-pass mode!

        String  := " AxxBBBBxxCCCCxxxDxxEExx"

        CSETATMUPA(.T.)
        ? AFTERATNUM("xx", String, 3, 4)   // "DxxEExx"

        CSETATMUPA(.F.)
        ? AFTERATNUM("xx", String, 3, 4)   // "EExx"

     .  Examples for SETATLIKE() can be found under the corresponding
        function description.

See Also: CSETATMUPA() SETATLIKE()

 

Tools – String Manipulations

Introduction 
ADDASCII()   Adds a value to each ASCII code in a string
AFTERATNUM() Returns remainder of a string after nth appearance of sequence
ASCIISUM()   Finds sum of the ASCII values of all the characters of a string
ASCPOS()     Determines ASCII value of a character at a position in a string
ATADJUST()   Adjusts the beginning position of a sequence within a string
ATNUM()      Determines the starting position of a sequence within a string
ATREPL()     Searches for a sequence within a string and replaces it
ATTOKEN()    Finds the position of a token within a string
BEFORATNUM() Returns string segment before the nth occurrence of a sequence
CENTER()     Centers a string using pad characters
CHARADD()    Adds the corresponding ASCII codes of two strings
CHARAND()    Links corresponding ASCII codes of paired strings with AND
CHAREVEN()   Returns characters in the even positions of a string
CHARLIST()   Lists each character in a string
CHARMIRR()   Mirrors characters within a string
CHARMIX()    Mixes two strings together
CHARNOLIST() Lists the characters that do not appear in a string
CHARNOT()    Complements each character in a string
CHARODD()    Returns characters in the odd positions of a string
CHARONE()    Reduces adjoining duplicate characters in string to 1 character
CHARONLY()   Determines the common denominator between two strings
CHAROR()     Joins the corresponding ASCII code of paired strings with OR
CHARPACK()   Compresses (packs) a string
CHARRELA()   Correlates the character positions in paired strings
CHARRELREP() Replaces characters in a string depending on their correlation
CHARREM()    Removes particular characters from a string
CHARREPL()   Replaces certain characters with others
CHARSORT()   Sorts sequences within a string
CHARSPREAD() Expands a string at the tokens
CHARSWAP()   Exchanges all adjoining characters in a string
CHARUNPACK() Decompresses (unpacks) a string
CHARXOR()    Joins ASCII codes of paired strings with exclusive OR operation
CHECKSUM()   Calculates the checksum for a character string (algorithm)
COUNTLEFT()  Counts a particular character at the beginning of a string
COUNTRIGHT() Counts a particular character at the end of a string
CRYPT()      Encrypts and decrypts a string
CSETATMUPA() Determines setting of the multi-pass mode for ATXXX() functions
CSETREF()    Determines whether reference sensitive functions return a value
EXPAND()     Expands a string by inserting characters
JUSTLEFT()   Moves characters from the beginning to the end of a string
JUSTRIGHT()  Moves characters from the end of a string to the beginning
LIKE()       Compares character strings using wildcard characters
LTOC()       Converts a logical value into a character
MAXLINE()    Finds the longest line within a string
NUMAT()      Counts the number of occurrences of a sequence within a string
NUMLINE()    Determines the number of lines required for string output
NUMTOKEN()   Determines the number of tokens in a string
PADLEFT()    Pads a string on the left to a particular length
PADRIGHT()   Pads a string on the right to a particular length
POSALPHA()   Determines position of first alphabetic character in a string
POSCHAR()    Replaces individual character at particular position in string
POSDEL()     Deletes characters at a particular position in a string
POSDIFF()    Finds the first position from which two strings differ
POSEQUAL()   Finds the first position at which two strings are the same
POSINS()     Inserts characters at a particular position within a string
POSLOWER()   Finds the position of the first lower case alphabetic character
POSRANGE()   Determines position of first character in an ASCII code range
POSREPL()    Replaces one or more characters from a certain position
POSUPPER()   Finds the position of the first uppercase, alphabetic character
RANGEREM()   Deletes characters that are within a specified ASCII code range
RANGEREPL()  Replaces characters within a specified ASCII code range
REMALL()     Removes characters from the beginning and end of a string
REMLEFT()    Removes particular characters from the beginning of a string
REMRIGHT()   Removes particular characters at the end of a string
REPLALL()    Exchanges characters at the beginning and end of a string
REPLLEFT()   Exchanges particular characters at the beginning of a string
REPLRIGHT()  Exchanges particular characters at the end of a string
RESTTOKEN()  Recreates an incremental tokenizer environment
SAVETOKEN()  Saves the incremental tokenizer environment to a variable
SETATLIKE()  Provides an additional search mode for all AT functions
STRDIFF()    Finds similarity between two strings (Levenshtein Distance)
STRSWAP()    Interchanges two strings
TABEXPAND()  Converts tabs to spaces
TABPACK()    Converts spaces in tabs
TOKEN()      Selects the nth token from a string
TOKENAT()    Determines the most recent TOKENNEXT() position within a string
TOKENEND()   Determines if more tokens are available in TOKENNEXT()
TOKENINIT()  Initializes a string for TOKENNEXT()
TOKENLOWER() Converts initial alphabetic character of a token into lowercase
TOKENNEXT()  Provides an incremental tokenizer
TOKENSEP()   Provides separator before/after most recently retrieved TOKEN()
TOKENUPPER() Converts the initial letter of a token into upper case
VALPOS()     Determines numerical value of character at particular position
WORDONE()    Reduces multiple appearances of double characters to one
WORDONLY()   Finds common denominator of 2 strings on double character basis
WORDREPL()   Replaces particular double characters with others
WORDSWAP()   Exchanges double characters lying beside each other in a string
WORDTOCHAR() Exchanges double characters for individual ones