home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* STRING1.PAS *)
- (* Die folgenden Stringprozeduren und -funktionen sind *)
- (* voll kompatibel zu den gleichnamigen aus der Unit *)
- (* SYSTEM, jedoch im Durchschnitt 3 mal so schnell. *)
- (* Bei der Prozedur Insert ist jedoch ein zusätzlicher *)
- (* Parameter nötig, den der Compiler bei der eingebauten *)
- (* Prozedur "dazumogelt". *)
- (* Die eigebundene ObjektDatei STRING1.OBJ muß mit dem *)
- (* MASM unter einer Version größer 5.0 erzeugt werden. *)
- (* *)
- (* (c) 1989 Norbert Juffa & TOOLBOX *)
- (* ------------------------------------------------------ *)
- UNIT String1;
-
- INTERFACE
-
- FUNCTION Pos (Objekt, Target : STRING) : BYTE;
- PROCEDURE Delete(VAR Target : STRING;
- Start, Count : INTEGER);
- PROCEDURE Insert(Source : STRING; VAR Target : STRING;
- MaxLen, Index : INTEGER);
-
- FUNCTION Instr(Objekt, Target : STRING;
- StartPos : BYTE) : BYTE;
-
-
- { Subst ersetzt alle Vorkommen des Strings "Replace" im }
- { String "Target" durch den String "Substitute". Vorsicht }
- { bei Überschreitung der Maximallänge von "Target" ! }
-
- PROCEDURE Subst(VAR Target : STRING;
- Replace, Substitute : STRING);
-
- IMPLEMENTATION
-
- {$L STRING1.OBJ}
-
- FUNCTION Pos; EXTERNAL;
- PROCEDURE Delete; EXTERNAL;
- FUNCTION Instr; EXTERNAL;
- PROCEDURE Insert; EXTERNAL;
-
- PROCEDURE Subst;
- VAR
- Position, Len1, Len2: BYTE;
- BEGIN
- IF Replace <> Substitute THEN BEGIN
- Position := Pos(Replace, Target);
- Len1 := Length (Substitute);
- Len2 := Length (Replace);
- WHILE Position <> 0 DO BEGIN
- Delete(Target, Position, Len2);
- Insert(Substitute, Target,
- Pred(SizeOf(Target)), Position);
- Position := Instr(Replace, Target,
- Position + Len1);
- END;
- END;
- END;
-
-
- END. { Strings }
- (* ------------------------------------------------------ *)
- (* Ende von STRING1.PAS *)