Contributor: ANDREW EIGUS
{
 MH> Could anyone know how to redirect a standard output (CRT) to a file using
 MH> standard Write/WriteLn(Output,...) Pascal procedures ?
I was playing around with this about two hours and i still didn't figure out
how to construct my program so Crt standard write and writeln procedures would
write depending on which device you specified in the command line.
So i left idea to trouble myself more and wrote my own dependent write
procedures that will print only string-typed variables, but at least can be
redirected to any other device than CONsole device. :)
Now my code goes:
{---cut here---}
Program SupportingRedirectionWithCrt;
{ Public Domain, by Andrew Eigus }
uses Crt;
Procedure DevWrite(Str : string); assembler;
{ Device-dependent write procedure }
Asm
 push ds
 lds si,Str
 cld
 xor ax,ax
 lodsb
 mov cx,ax
 mov dx,si
 mov bx,1 { standard output device }
 mov ah,40h
 int 21h
 pop ds
End; { DevWrite }
Procedure DevWriteLn(Str : string); assembler;
{ Device-dependent writeln procedure }
Asm
 les si,Str
 push es
 push si
 call DevWrite
 mov ah,02h
 mov dl,0Dh
 int 21h
 mov dl,0Ah
 int 21h
End; { DevWriteLn }
Begin
 DevWriteLn('Hello, world!'#13#10);
 DevWriteLn('This text might be freely redirected to any device from the');
 DevWriteLn('command line.');
 WriteLn(#13#10'And this text may appear on screen only.')
End.


AltStyle によって変換されたページ (->オリジナル) /