{ 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 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 (

ause and 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> } 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.