home *** CD-ROM | disk | FTP | other *** search
- 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.