TFileStream で標準出力に表示
|
> テキストファイルの入出力は TStringList でやると便利です。
> そこで、コンソールアプリケーションの標準出力でも使いたいなと、
> SaveToFile('con') を実行したところ例外で失敗しました。
> VCLソースを追いかけてみたところ、TFileStream.Create() で例外が起きていました。
>
> ところが、SaveToFile('nul') を実行したところ、なにも出力されないとはいえ
> 例外が発生することなく実行できました。
>
> 簡単に使えないのはしかたないのですが、この違いはなんでしょうね?
これ、'con'の代わりに'conout$'だと行けるみたいですね。
ところで、ちょっと横道にそれますけど、'con'だと仮にopen出来ても
リダイレクトした場合にまでコンソールに表示されて場合によっては
不便じゃありませんか?
その場合は以下のようにした方が良いかと。
uses
windows, classes, sysutils;
var
s : TStringList;
hs : THandleStream;
begin
s := TStringList.Create;
try
hs := THandleStream.Create(GetStdHandle(STD_OUTPUT_HANDLE));
try
s.SetText('一行目'#10'二行目'#10'三行目'#10);
s.SaveToStream(hs);
finally
hs.free;
end;
finally
s.free;
end;
end. |
|