Posted on Wednesday, January 02, 2008 at 2:43 AM
Here, for completeness without further comment, is the code for
RTrim,
LTrim and
Trim which are included in the unit
Tools.
Function RTrim (Var S : String) : String ;
{
RTrim -- remove trailing blanks
}
Var
i : Byte ;
begin { RTrim }
for i := Length(S) downto 1 do
if S[i] > BLANK then begin
S := Copy(S,1,i) ;
RTrim := S ;
Exit
end ;
{
if we reach this point then S contains only BLANKS
so we return a null string
}
S := '' ;
RTrim := S
end ; { RTrim }
Function LTrim (Var S : String) : String ;
{
LTrim -- remove leading blanks
}
Var
i : Byte ;
begin { LTrim }
for i := 1 to Length(S) do
if S[i] > BLANK then begin
S := Copy(S,i,MAXSTR) ;...
The next program in our project is
EnTab which replaces runs of blanks in a text file by tabs and blanks. Here is the specification, i.e., the "manual"
PROGRAM
EnTab -- convert runs of blanks into tabs
USAGE
EnTab
FUNCTION
EnTab copies its input to its output, replacing strings of blanks by
tabs so that the output is visually the same as the input but contains
fewer characters. Tab stops are assumed to be set every 3 columns
(i.e., 1, 4, 7, ...), so that each sequence of one to four blanks
ending on a tab stop is replaced by a tab character.
BUGS
1. EnTab is naive about backspaces, vertical motions and non-printing
characters.
2. EnTab will convert a single blank to a tab if it occurs at a tab
stop, thus EnTab is not an exact inverse of DeTab.
3. if any record in the input is longer than 255 char Entab will
truncate that record to 255 char.
...