[Back to STRINGS SWAG index] [Back to Main SWAG index] [Original]
UNIT Strings;
INTERFACE
USES
CRT, {Import TextColor,TextBackGround}
DOS; {Import FSplit,PathStr,NameStr,ExtStr,DirStr}
TYPE
TDir = (L,R);
FUNCTION Str2Int(Str: String; (* Converts String to Integer *)
VAR Code: Integer): Integer;
FUNCTION Int2Str(I: Integer): String; (* Converts Integer to String *)
FUNCTION StripSlash(Str: String): String; (* String trailing '\' *)
FUNCTION AddSlash(Str: String): String; (* Add trailing '\' *)
FUNCTION PadStr(Str: String; (* Pad String with characters *)
Ch: Char; (* Character to pad with *)
Num: Byte; (* Number of places to pad to *)
Dir: TDir): String; (* Direction to pad in *)
FUNCTION UpCaseStr(Str: String): String; (* Convert string to uppercase *)
FUNCTION LowCaseStr(Str: String): String; (* Convert string to lowercase *)
FUNCTION NameForm(Str: String): String; (* Convert string to Name format *)
FUNCTION StripExt(Str: String): String; (* Strip Extension from filename *)
FUNCTION AddExt(Str,Ext: String): String; (* Add Extension to filename *)
FUNCTION ExtractFName(Str: String): String; (* Extract Filename *)
FUNCTION ExtractFExt(Str: String): String; (* Extract file extension *)
PROCEDURE Pipe(Str: String); (* Write string allowing for pipe codes *)
IMPLEMENTATION
FUNCTION Str2Int(Str: String;
VAR Code: Integer): Integer;
VAR I: Integer;
BEGIN
VAL(Str,I,Code);
Str2Int := I;
END;
FUNCTION Int2Str(I: Integer): String;
VAR S: String;
BEGIN
STR(I,S);
Int2Str := S;
END;
FUNCTION StripSlash(Str: String): String;
BEGIN
IF Str[Length(Str)] = '\' THEN
StripSlash := COPY(Str,1,Length(Str)-1);
END;
FUNCTION AddSlash(Str: String): String;
BEGIN
IF Str[Length(Str)] <> '\' THEN
AddSlash := Str + '\';
END;
FUNCTION PadStr(Str: String;
Ch: Char;
Num: Byte;
Dir: TDir): String;
VAR
TempStr: String;
B: Byte;
BEGIN
TempStr := '';
IF Length(Str) < Num THEN
BEGIN
FOR B := Length(Str) TO Num DO TempStr := TempStr + Ch;
CASE Dir OF
L: PadStr := TempStr + Str;
R: PadStr := Str + TempStr;
END;
END
ELSE
BEGIN
FOR B := 1 TO Num DO TempStr := TempStr + Str[B];
PadStr := TempStr;
END;
END;
FUNCTION UpCaseStr(Str: String): String;
VAR
TempStr: String;
B: Byte;
BEGIN
TempStr := Str;
FOR B := 1 TO Length(Str) DO TempStr[B] := UpCase(TempStr[B]);
UpCaseStr := TempStr;
END;
FUNCTION LowCaseStr(Str: String): String;
VAR
TempStr: String;
B: Byte;
BEGIN
TempStr := Str;
FOR B := 1 TO Length(Str) DO IF TempStr[B] IN ['A'..'Z'] THEN
TempStr[B] := CHR(ORD(TempStr[B])+32);
LowCaseStr := TempStr;
END;
FUNCTION NameForm(Str: String): String;
VAR
TempStr: String;
Pos: Byte;
BEGIN
TempStr := Str;
TempStr[1] := UpCase(TempStr[1]);
FOR Pos := 2 TO Length(TempStr) DO
IF TempStr[Pos] = #32 THEN
TempStr[Pos+1] := UpCase(TempStr[Pos+1])
ELSE
IF TempStr[Pos] IN ['A'..'Z'] THEN
TempStr[Pos] := CHR(ORD(TempStr[Pos])+32);
NameForm := TempStr;
END;
FUNCTION StripExt(Str: String): String;
VAR DotPos: Byte;
BEGIN
DotPos := POS('.',Str);
IF DotPos > 1 THEN StripExt := COPY(Str,1,DotPos-1)
ELSE StripExt := Str;
END;
FUNCTION AddExt(Str,Ext: String): String;
VAR DotPos: Byte;
BEGIN
DotPos := POS('.',Str);
IF (DotPos > 1) AND (DotPos < 10) THEN AddExt := COPY(Str,1,DotPos) + Ext
ELSE IF DotPos = 0 THEN AddExt := Str + '.' + Ext;
END;
FUNCTION ExtractFName(Str: String): String;
VAR
Path: PathStr;
Dir: DirStr;
Name: NameStr;
Ext: ExtStr;
BEGIN
Path := Str;
FSplit(Path,Dir,Name,Ext);
ExtractFName := Name+Ext;
END;
FUNCTION ExtractFExt(Str: String): String;
VAR
Path: PathStr;
Dir: DirStr;
Name: NameStr;
Ext: ExtStr;
BEGIN
Path := Str;
FSplit(Path,Dir,Name,Ext);
ExtractFExt := Ext;
END;
PROCEDURE Pipe(Str: String);
VAR
StrPos, Err: Integer;
Col: Byte;
BEGIN
StrPos := 1;
IF Length(Str) < 1 THEN Exit;
REPEAT
IF (Str[StrPos] = '|') THEN
BEGIN
Val(Copy(Str,StrPos+1,2),Col,Err);
IF (Err = 0) AND (Col IN [0..23]) THEN
IF Col IN [0..15] THEN TextColor(Col)
ELSE TextBackGround(Col-16);
Inc(StrPos,3);
END
ELSE
BEGIN
Write(Str[StrPos]);
Inc(StrPos);
END;
UNTIL (StrPos > Length(Str));
END;
BEGIN
END.
[Back to STRINGS SWAG index] [Back to Main SWAG index] [Original]