home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #27 / NN_1992_27.iso / spool / comp / lang / pascal / 6802 < prev    next >
Encoding:
Internet Message Format  |  1992-11-21  |  1.8 KB

  1. Path: sparky!uunet!zaphod.mps.ohio-state.edu!darwin.sura.net!lhc!adm!news
  2. From: Paul.Robinson@f417.n109.z1.fidonet.org (Paul Robinson)
  3. Newsgroups: comp.lang.pascal
  4. Subject: String (3/4)
  5. Message-ID: <34188@adm.brl.mil>
  6. Date: 21 Nov 92 17:21:34 GMT
  7. Sender: news@adm.brl.mil
  8. Lines: 103
  9.  
  10. function search(VAR s,t:string; start:integer):integer;
  11.  
  12. var     i,j: 0..stringmax;
  13.  
  14.         uneq: boolean;
  15.  
  16. begin
  17.  
  18.         if start<1 then start:=1;
  19.  
  20.         if (start+t.len>s.len+1) or (t.len=0)
  21.  
  22.            then search:=0
  23.  
  24.            else begin
  25.  
  26.               i:=start-1;
  27.  
  28.               repeat
  29.  
  30.                  i:=i+1; j:=0;
  31.  
  32.                  repeat
  33.  
  34.                     j:=j+1;
  35.  
  36.                     uneq:=t.ch[j]<>s.ch[i+j-1];
  37.  
  38.                  until uneq or (j=t.len);
  39.  
  40.               until (not uneq) or (i=s.len-t.len+1);
  41.  
  42.               if uneq
  43.  
  44.                  then search:=0
  45.  
  46.                  else search:=i;
  47.  
  48.               end;
  49.  
  50. end;
  51.  
  52.  
  53.  
  54. procedure readstring(var f:text; var s:string);
  55.  
  56. begin
  57.  
  58.         clear(s);
  59.  
  60.         with s do
  61.  
  62.            while (not eoln(f)) and (len<stringmax) do begin
  63.  
  64.               len:=len+1;
  65.  
  66.               read(f,ch[len]);
  67.  
  68.               end;
  69.  
  70.         readln(f);
  71.  
  72. end;
  73.  
  74.  
  75.  
  76. procedure writestring(var f:text; VAR s:string);
  77.  
  78. begin   write(f,s.ch:s.len)
  79.  
  80. end;
  81.  
  82.  
  83.  
  84. procedure substring(var t:string; VAR s:string; start,span:integer);
  85.  
  86. var     i: integer;
  87.  
  88. begin
  89.  
  90.         if span<0 then begin span:= -span; start:=start-span end;
  91.  
  92.         if start<1 then begin span:=span+start-1; start:=1 end;
  93.  
  94.         if start+span>s.len+1 then span:=s.len-start+1;
  95.  
  96.         if span<=0
  97.  
  98.            then clear(t)
  99.  
  100.            else begin
  101.  
  102.               for i:=1 to span do t.ch[i]:=s.ch[start+i-1];
  103.  
  104.               for i:=span+1 to stringmax do t.ch[i]:=' ';
  105.  
  106.               t.len:=span;
  107.  
  108.               end;
  109.  
  110. end;
  111.  
  112.  
  113.