Delphi Tips 
-----------------------------

0161  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/02/11 osamu rev 1.1
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/02/11 osamu 編集
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.
参照: [Delphi-ML:31323] <Windows> <ファイル>

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp