function StrReverse( strVal : string ) : string; // return the string with characters in reverse order
var
strRtn : string = ''; // function result
idxStr : integer ; // indexer
chrCur : char ; // current character
begin
for idxStr := Byte(Length(strVal)) DownTo 1 do begin // scan all characters in the string in reverse order
// Byte() conversion avoids Warning: (4048) Type size mismatch, possible loss of data / range check error
chrCur := strVal[idxStr]; // get current character
strRtn := strRtn + chrCur; // append it to the output
end; // done scanning
StrReverse := strRtn; // pass result back to caller
end; // StrReverse
function StrFrmInt( prmInt : integer ) : string; // convert from Integer to String, in base-ten only
var
strRtn : string = '' ; // function result
ptrTmp : byte ; // value of current integer-digit
chrTmp : char ; // char of current string -digit
begin
while prmInt > 0 do begin // eat all of caller's integer value, from ones-place to largest-place
ptrTmp := prmInt Mod 10; // get value of current last digit
ptrTmp := ptrTmp + 48; // convert from zero-based to '0'-based
chrTmp := Chr( ptrTmp ) ; // convert from byte-digit to character-digit
strRtn := strRtn + chrTmp ; // append character-digit to result
prmInt := prmInt Div 10; // drop last digit from caller's integer
end ; // done eating caller's integer value
strRtn := StrReverse( strRtn ); // convert our characters from [ones-place through largest-place] to [largest-place through ones-place]
Result := strRtn ; // pass result back to caller
end; // StrFrmInt