home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!zaphod.mps.ohio-state.edu!darwin.sura.net!lhc!adm!news
- From: Paul.Robinson@f417.n109.z1.fidonet.org (Paul Robinson)
- Newsgroups: comp.lang.pascal
- Subject: String (3/4)
- Message-ID: <34188@adm.brl.mil>
- Date: 21 Nov 92 17:21:34 GMT
- Sender: news@adm.brl.mil
- Lines: 103
-
- function search(VAR s,t:string; start:integer):integer;
-
- var i,j: 0..stringmax;
-
- uneq: boolean;
-
- begin
-
- if start<1 then start:=1;
-
- if (start+t.len>s.len+1) or (t.len=0)
-
- then search:=0
-
- else begin
-
- i:=start-1;
-
- repeat
-
- i:=i+1; j:=0;
-
- repeat
-
- j:=j+1;
-
- uneq:=t.ch[j]<>s.ch[i+j-1];
-
- until uneq or (j=t.len);
-
- until (not uneq) or (i=s.len-t.len+1);
-
- if uneq
-
- then search:=0
-
- else search:=i;
-
- end;
-
- end;
-
-
-
- procedure readstring(var f:text; var s:string);
-
- begin
-
- clear(s);
-
- with s do
-
- while (not eoln(f)) and (len<stringmax) do begin
-
- len:=len+1;
-
- read(f,ch[len]);
-
- end;
-
- readln(f);
-
- end;
-
-
-
- procedure writestring(var f:text; VAR s:string);
-
- begin write(f,s.ch:s.len)
-
- end;
-
-
-
- procedure substring(var t:string; VAR s:string; start,span:integer);
-
- var i: integer;
-
- begin
-
- if span<0 then begin span:= -span; start:=start-span end;
-
- if start<1 then begin span:=span+start-1; start:=1 end;
-
- if start+span>s.len+1 then span:=s.len-start+1;
-
- if span<=0
-
- then clear(t)
-
- else begin
-
- for i:=1 to span do t.ch[i]:=s.ch[start+i-1];
-
- for i:=span+1 to stringmax do t.ch[i]:=' ';
-
- t.len:=span;
-
- end;
-
- end;
-
-
-