[Back to REDIRECT SWAG index] [Back to Main SWAG index] [Original]
{
Here's a neat little ditty I converted from a C++ tip I saw in a mag a few
years ago. It tests to see if its own output has been redirected and
returns a 1 if TRUE (redirected) or a 0 if FALSE (not redirected). This
function includes a sample prog that demonstrates its use. SIDE NOTE: I
put this function in the U_FILE.pas.tpu for use with all of my home-grown
file related functions and procedures.
TEST WITH: Test_Red (enter)
[you should see a NOT REDIRECTED msg, 10 lines and a FINISHED msg.]
TEST WITH: Test_Red > this.dat (enter)
[you should see a REDIRECTED msg, (no lines) and a FINISHED msg
and the output of the lines will be in the this.dat file]
}
program test_red;
{$A+,B-,D-,E-,F-,G-,I+,L-,N-,O-,P-,Q-,R-,S+,T-,V+,X-}
{$M 1024,0,655360}
{*******************************************************************!HDR**
** Function Name: fn_bRedirected()
** Description : Determines if output has been redirected;
** Returns : Integer to be treated as boolean;
** Calls :
** Special considerations:
** Modification history:
** Created: 11/03/93 20:23
*********************************************************************!END}
function fn_bRedirected : Integer; Assembler; {Treated as BOOLEAN}
asm
push ds
mov ax, prefixseg
mov ds, ax
xor bx, bx
les bx, [bx + $34]
mov al, es:[bx]
mov ah, es:[bx +1]
pop ds
cmp al, ah
mov ax, 1
jne @_exit
xor ax, ax
@_exit:
{mov @Result, AX}
end;
var
Count : Byte;
hOutFile : text;
begin
Assign(hOutFile, 'CON');
ReWrite(hOutFile);
if not (boolean(fn_bRedirected)) then
writeln(hOutFile, 'Not Redirected')
else
writeln(hOutFile, 'Please wait while redirection is in progress');
for Count := 1 to 10 do
writeln('Line ', Count : 2);
writeln(hOutFile, 'Finished!');
end.
[Back to REDIRECT SWAG index] [Back to Main SWAG index] [Original]