私はredmonを使用して処理のためにpostscriptをdelphiにリダイレクトしています。Redmon&Delphiで標準入力をキャプチャ
私は、ファイルに標準入力を読み取るために、次のコードを使用しています:
var
Stdin: THandleStream;
FStream: TFileStream;
BytesRead:Int64;
Buffer: array[0..1023] of Byte;
StdIn := THandleStream.Create(GetStdHandle(STD_INPUT_HANDLE));
try
tempps:=GetTempFile('.ps');
FStream:=tfilestream.Create(tempps,fmCreate or fmOpenReadWrite);
StdIn.Seek(0,0);
try
repeat
BytesRead:=StdIn.Read(Buffer,1024);
FStream.Write(Buffer,BytesRead);
until bytesread<SizeOf(Buffer);
finally
InputSize:=FStream.Size;
FStream.Free;
end;
finally
StdIn.Free;
end;
これはredmonログファイルを示すものを除いて、ほとんどの場合のために働く:
REDMON WritePort: OK count=65536 written=65536
REDMON WritePort: Process not running. Returning TRUE.
Ignoring 65536 bytes
は事実ですそれは65536ちょうど赤いニシン、それは私が正しくstdinを読んでいないか、または私が見落としてしまったどこか奇妙な限界があるのですか?
ありがとうございます。
編集1
65536は赤いニシンです - redmonプリントこのメッセージログ内のすべての64k、ファイル全体がredmonが早く出力を閉じようしかし、ルックない、688759バイトですが、その後、まだ出力し続けとにかく多くのテキスト。
時間。あなたのプロセスはまったく実行されましたか?もしそうなら、どれくらいのデータを読みましたか?それはどれくらい読まれるはずでしたか? Redmonは頻繁に*正確に* 64 KBのデータを生成しますか? –
redmonのログを解釈してください。 –