【发布时间】:2011-12-08 15:12:21
【问题描述】:
我正在使用redmon 将postscript 重定向到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 只是一个红鲱鱼,是我没有正确阅读标准输入,还是我忽略了一些奇怪的限制?
提前致谢。
编辑 1
65536 是一条红鲱鱼 - redmon 在日志中每 64k 打印一次此消息,整个文件为 688759 字节,但看起来 redmon 提前关闭了输出,但无论如何仍会继续输出更多文本。
【问题讨论】:
-
是时候进行一些基本的调试了。你的进程运行了吗?如果是这样,它读取了多少数据?它应该读多少? Redmon 是否经常恰好生成 64 KB 的数据?
-
请为我们解读redmon日志。
标签: delphi console-application