[fpc-pascal]Redirecting StdOut

Rich Pasco pasco at acm.org
Sat May 25 00:06:00 CEST 2002


Hi,

Here's a simple Win32 console program which is supposed to demonstrate
redirecting StdOut.  However the line "This should go to redout.txt"
still goes to to the console.  Can anyout tell me what is wrong?

     - Rich

uses Windows, DOS;

var
  OutHandle: handle; { Handles identify stored file table entries }

function RedStdOut(var OutFile : text) : boolean;
  begin
    OutHandle := GetStdHandle(STD_OUTPUT_HANDLE);
    RedStdOut := SetStdHandle(STD_OUTPUT_HANDLE, TextRec(OutFile).handle);
  end;

function UnRedStdOut : boolean;
  begin
    UnRedStdOut := SetStdHandle(STD_OUTPUT_HANDLE, OutHandle);
  end;

var
  RedOutFile: text;

procedure RedOut(ToFileName: string);
  begin
    Assign(RedOutFile,ToFileName);
    Rewrite(RedOutFile);
    if not RedStdOut(RedOutFile) then
      WriteLn('Could not redirect StdOut to '+ToFileName);
  end;

procedure UnRedOut;
  begin
    if not UnRedStdOut then WriteLn('Could not restore StdOut.');
    close(RedOutFile);
  end;

begin
  WriteLn('This goes to console');
  RedOut('redout.txt');
  writeln('This should go to redout.txt');
  UnRedOut;
  WriteLn('This goes to console again');
end.





More information about the fpc-pascal mailing list