home *** CD-ROM | disk | FTP | other *** search
- { Patch Routine for T-Room by Matt Wing - Find/Replace Routine for editor.}
- { Also some Misc. Routines at the end of file. This is NOT a include file.}
- { You must type this in or use ^K^R in your Wordstar or Turbo Editor. }
- { August '86 - DST }
- { August '86 - DST Updated error in Replace and More trivial routines..}
- { Sept. '86 - DST Added the upper to lowercase routine. }
-
- { Add in Cit.Pas - Var define.. }
- replace_string,target_string:string[80];
-
- { Ok, you are under the editcommand loop.. }
-
- if keyin='?' then.. {Example..}
- if keyin='S' then..
- if keyin='R' then
- begin { Find/Replace Start }
- writeln('eplace string');
- write('Enter string: ');
- readln(replace_string);
- count:=0;
- count1:=1;
- savecol:=colposition;
- colposition:=1;
- repeat
- begin
- count:=pos(replace_string,editline[count1];
- count1:=count1+1;
- end;
- until (count1>=row) or (count<>0);
- if count<>0 then
- begin
- write('"',replace_string,'" is replaced with =-> ');
- readln(target_string);
- delete(editline[count1-1],count,length(replace_string));
- insert(target_string,editline[count1-1],count);writeln;
- writeln(editline[count1-1]);
- write(' ':count-1); {These 3 lines write the }
- for count:=1 to length(target_string) do { ^'s that point to the }
- write('^'); { Correction made.. }
- writeln;
- end;
- if count=0 then writeln('"',replace_string,'" not found. Check spelling.');
- goto editcommand;
- end; { replace string }
-
- { This next routine is added to Cit.Pas - Allows the user to .Goto rooms }
- { without having to type in the whole room.
- Example:
- .Goto <space>news
- will take you to 'System News' or whatever room that has 'news' in it.. }
- if keyin='.' then..
- if character='G'..
- while count1<=15 do
- begin
- compstring:=rooma[count1];
- upcaseconv(compstring);
- {new} if (pos(instring, compstring)>0) then
- {replaces 'if compstring=instring then'..}
- begin
- lastread[roompoint]:=nextmessnum-1;
- ...
- { If you add this patch, you also have to switch this routine: }
-
- procedure upcaseconv(var tranchar:word25);
- begin
- len:=length(tranchar);
- oustring:='';
- count:=1;
- while count <= len do
- begin
- character:=tranchar[count];
- if character in ['a'..'z'] then character:=chr(ord(character)-32_;
- outstring:=outstring+character;
- count:=count+1;
- end;
- tranchar:=oustring;
- end;
-
- oh yeah, and add :
-
- if room='Mail' then
- writeln(' ',date,' from ',username,' to ',mailname);
- (for user's ease..)
- if room<>'Mail' then
- writeln(' ',date,' from ',username);
-
- And one more thing:
- procedure pause;
-
- Add:
- if (chr(kbdin)='P') OR (chr(kbdin)=#$13) then ....
-
- And at the bottom:
- if chr(kbdin)=#$03 then stopflag:=true;
- if chr(kbdin)='S'...
-
- { This allows ^S and ^C (<P>ause and <S>top) }
-
- AND another thing with the I/O stuff, I modified mine to I/O check only
- between words.. like:
-
- Procedure Dumpfile;
- begin...
- ...
- begin
- character:=copy(line,count,1)
- write(character);
- count:=count+1;
- if character=' ' then
- pause;
- if stopflag=true then
- begin...
- { Above might just be a nuisance }
-
- { Ok, finally figured out how to heed the english syntax for the upper to
- lowercase conversion. Here is the installation routine: }
-
- { Find editcommand loop under 'Enter message'.. Find the 'S'ave routine}
- if keyin='S' then
- begin
- writeln('aving message.');
- buffercnt:=1;...
- ...
- ...
- count:=endpoint+3;
- endpoint:=count+row-1;
- while count<endpoint do
- begin
- { Add >> } switch(editline[buffercnt], buffercnt); { << Add }
- count:=count+1;
- buffercnt:=buffercnt+1;
- ...
-
- { Now, under CIT2.PAS or any other include file, insert the following
- procedure :}
- Procedure Switch(var liner: Word80; Num: integer);
- var counter: integer;
- c: char;
- f, caps: boolean;
- sw: string[80];
-
- begin
- counter:=1;
- f:=true;
- while (counter<=length(liner)) and (f) do
- begin
- c:=liner[counter];
- counter:=counter+1;
- if c in ['a'..'z'] then f:=false
- else
- f:=true
- end;
- if (f) then
- begin
- counter:=1;
- caps:=false;
- sw:='';
- while counter<=length(liner) do
- begin
- c:=liner[counter];
- if (num=1) and (counter=1) then { Cap 1st letter in 1st line..}
- caps:=true;
- if (c in ['.','(','?','!']) then { Any more signs I didn't think of?}
- caps:=true;
- if (c in ['A'..'Z']) and (not caps) then
- c:=chr(ord(c)+32);
- if (caps) and (c in ['A'..'Z']) then
- caps:=false;
- sw:=sw+c;
- counter:=counter+1;
- end;
- liner:=sw;
- end;
- end;
-
-
- { I originally had this in 2 separate functions and procedures, but figured
- I wouldn't use a 'Check_to_see_if_a_lower_case_letter_exists' procedure
- more than once.. If you want to maintain the modular type programming you
- can break 'em up.. thought I would save a little code space this way.. }
-
- - Dave T.