home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 11 / grdlagen / string1.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-07-25  |  2.2 KB  |  65 lines

  1. (* ------------------------------------------------------ *)
  2. (*                    STRING1.PAS                         *)
  3. (* Die folgenden Stringprozeduren und -funktionen sind    *)
  4. (* voll kompatibel zu den gleichnamigen aus der Unit      *)
  5. (* SYSTEM, jedoch im Durchschnitt 3 mal so schnell.       *)
  6. (* Bei der Prozedur Insert ist jedoch ein zusätzlicher    *)
  7. (* Parameter nötig, den der Compiler bei der eingebauten  *)
  8. (* Prozedur "dazumogelt".                                 *)
  9. (* Die eigebundene ObjektDatei STRING1.OBJ muß mit dem    *)
  10. (* MASM unter einer Version größer 5.0 erzeugt werden.    *)
  11. (*                                                        *)
  12. (*       (c) 1989  Norbert Juffa  &  TOOLBOX              *)
  13. (* ------------------------------------------------------ *)
  14. UNIT String1;
  15.  
  16. INTERFACE
  17.  
  18. FUNCTION  Pos   (Objekt, Target : STRING) : BYTE;
  19. PROCEDURE Delete(VAR Target       : STRING;
  20.                      Start, Count : INTEGER);
  21. PROCEDURE Insert(Source : STRING; VAR Target : STRING;
  22.                  MaxLen, Index : INTEGER);
  23.  
  24. FUNCTION  Instr(Objekt, Target : STRING;
  25.                 StartPos : BYTE) : BYTE;
  26.  
  27.  
  28.  { Subst ersetzt alle Vorkommen des Strings "Replace" im   }
  29.  { String "Target" durch den String "Substitute". Vorsicht }
  30.  { bei Überschreitung der Maximallänge von "Target" !      }
  31.  
  32. PROCEDURE Subst(VAR Target : STRING;
  33.                 Replace, Substitute : STRING);
  34.  
  35. IMPLEMENTATION
  36.  
  37. {$L STRING1.OBJ}
  38.  
  39. FUNCTION  Pos;          EXTERNAL;
  40. PROCEDURE Delete;       EXTERNAL;
  41. FUNCTION  Instr;        EXTERNAL;
  42. PROCEDURE Insert;       EXTERNAL;
  43.  
  44. PROCEDURE Subst;
  45. VAR
  46.   Position, Len1, Len2: BYTE;
  47. BEGIN
  48.   IF Replace <> Substitute THEN BEGIN
  49.     Position := Pos(Replace, Target);
  50.     Len1     := Length (Substitute);
  51.     Len2     := Length (Replace);
  52.     WHILE Position <> 0 DO BEGIN
  53.       Delete(Target, Position, Len2);
  54.       Insert(Substitute, Target,
  55.              Pred(SizeOf(Target)), Position);
  56.       Position := Instr(Replace, Target,
  57.                         Position + Len1);
  58.     END;
  59.   END;
  60. END;
  61.  
  62.  
  63. END. { Strings }
  64. (* ------------------------------------------------------ *)
  65. (*                Ende von STRING1.PAS                    *)