[Back to ANSI SWAG index]  [Back to Main SWAG index]  [Original]

{
>How do I make an ansi and put it in my Pascal File?  I know there is an
>option to save as pascal, but it does not look like anything to me!
>Any help is appreciated!

Here is a Program that will read an ANSI File into a buffer in 2k chunks
then Write it (to screen) Character by Character. BUT - it will Write
all ANSI-escape-sequences as StringS.

   Two reasons For this:

 1) I just 'feel happier' if each ANSI escape sequence is written to
 screen as a String instead of as individual Characters. (Its just an
 irrational 'thing' I have)

 2) By assembling all the Characters in the escape sequence together,
 it make its _easy_ to FILTER OUT all ANSI sequences if you want to just
 output plain black-and-white Text. This is For those people who for
 some strange reason would rather not have ANSI.SYS installed, but
 complain about getting 'garbage' Characters on the screen.

All you have to do to filter out the escape sequences is to
un-bracket the 'if AnsiDetected then' part.

if you want me to post 'Function AnsiDetected: Boolean' just let me
know.
}

Program ansiWrite;

Const esc = chr(27);
      termnChar: SET of Char =
                 ['f','A'..'D','H','s','u','J','K','l'..'n','h'];

Var f: File;
    buf:Array[1..2048] of Char;
    Numread: Word;
    num: Integer;
    escString: String;
    escseq: Boolean;

begin
  Assign(f,'FRINGE3.ANS');
  Reset(f,1);
  escseq := False;
  escString:='';
  Repeat
    BlockRead(f,buf,Sizeof(Buf),Numread);
    { Write Block to Screen }
    For NUM := 1 to Numread DO
    begin
      if Buf[Num] = esc then escseq := True;
      if escseq=True then
      begin
        escString:= escString+buf[num];
        if Buf[num] in termnChar  then
        begin
          escseq:=False;
          {if AnsiDetected then} Write(escString);
          escString:=''
        end
      end
      else Write(Buf[num])
    end; { For }
  Until NumRead < SizeOf(Buf);
  close(f)
end.

[Back to ANSI SWAG index]  [Back to Main SWAG index]  [Original]