[Back to STRINGS SWAG index] [Back to Main SWAG index] [Original]
Uses DOS, Crt;
VAR S : String;
function CommaString (number : longint) : string;
var
TempStr : string;
OrgLen : byte;
begin
Str (number, tempstr);
OrgLen := Length (tempstr);
if OrgLen > 3 then
begin
if OrgLen < 7 then
Insert (',', tempstr, Length (tempstr) - 2);
if OrgLen >= 7 then
begin
Insert (',', tempstr, length (tempstr) - 5);
Insert (',', tempstr, length (tempstr) - 2);
end;
end;
CommaString := tempstr;
end;
FUNCTION FmtStr (STR, Fmt : STRING) : STRING;
VAR
TempStr : STRING;
I, J : BYTE;
BEGIN
TempStr := '';
IF (POS (',', Fmt) > 0) THEN
BEGIN
FmtStr := STR;
IF LENGTH (STR) <= 3 THEN EXIT;
J := 0;
FOR I := LENGTH (STR) DOWNTO 1 DO
BEGIN
TempStr := STR [i] + TempStr;
INC (j);
IF (J MOD 3 = 0) AND (TempStr[1] <> '.') THEN TempStr := ',' + TempStr;
END;
WHILE TempStr [1] = ',' DO
TempStr := COPY (TempStr, 2, LENGTH (TempStr) );
END ELSE
BEGIN
J := 0;
FOR I := 1 TO LENGTH (Fmt) DO
BEGIN
IF NOT (Fmt [I] IN ['#', '!', '@', '*']) THEN
BEGIN
TempStr [I] := Fmt [I] ; {force any none format charcters into string}
J := SUCC (J);
END
ELSE {format character}
BEGIN
IF I - J <= LENGTH (STR) THEN
TempStr [I] := STR [I - J]
ELSE
TempStr [I] := ' '; {pad with underlines}
END;
END;
TempStr [0] := CHAR (LENGTH (Fmt) ); {set initial byte to string length}
END;
FmtStr := Tempstr;
END; {Func FmtStr}
FUNCTION FmtReal(Num : REAL; FMT : STRING) : STRING;
VAR Tmp : STRING;
BEGIN
STR (Num : 12 : 2, Tmp);
WHILE (NOT (Tmp[1] in ['0'..'9','.'])) AND (Tmp > '') DO DELETE(Tmp,1,1);
FmtReal := FmtStr(Tmp, FMT);
END;
(*
Hi boys,
These routines are fairly simple to understand and should work for you in
in just about any situation. I've used them for years, and I've found
them to be the answer to all my needs.
If you need more help with these, just call !!
Gayle
*)
BEGIN
ClrScr;
WriteLn(CommaString(123456789)); { Format any type of INTEGER }
WriteLn(FmtReal(1234567.89,'##,###,###,###.##')); { Format Type REAL with decimals }
WriteLn(FmtStr('2198758811','(###) ###-####')); { Format a Phone number }
WriteLn(FmtStr('062593','##/##/##')); { Format a date number }
Readkey;
END.
[Back to STRINGS SWAG index] [Back to Main SWAG index] [Original]