Làm cách nào để ghi vào stdout từ ứng dụng bảng điều khiển Delphi?Làm thế nào để ghi dữ liệu nhị phân vào stdout trong Delphi?
Đây là những gì tôi đã thử. Tôi đã gian lận ứng dụng thử nghiệm đơn giản này theo infos tôi có thể tìm thấy, để đọc một tập tin từ đĩa và xuất nó sang giao diện điều khiển stdout:
program ConsoleOut;
{$APPTYPE CONSOLE}
uses
Classes, Windows, SysUtils;
var
S: TMemoryStream;
OutputStream: THandleStream;
ss: string;
Buffer: PByte;
i: Integer;
begin
S := TMemoryStream.Create;
S.LoadFromFile('1.jpg');
S.Seek(0, soFromBeginning);
//Am I right that from now on writing to OutputStream will write to stdout?
OutputStream := THandleStream.Create(GetStdHandle(STD_OUTPUT_HANDLE));
GetMem(Buffer, S.Size);
S.ReadBuffer(Buffer^, S.Size);
i := OutputStream.Write(Buffer^, S.Size); //i = 0 here for some reason
FreeMem(Buffer, S.Size);
Writeln(i, ' byte written to output');
Readln(ss); //Don't exit app to read previous line
S.Free;
end.
Nhưng vì lý do nào đó nó không thành công. Bạn có thể vui lòng hướng dẫn tôi vào cách viết thích hợp để stdout không?
tò mò TẠI SAO bạn muốn ghi âm nhị phân vào bàn điều khiển? Bạn đề cập đến một cái gì đó về văn bản để nói. Tại sao không đặt tên đường ống? –
Ống dẫn có tên ưu điểm nào có chống lại stdout? – Kromster
Được thiết kế để truyền dữ liệu nghiêm trọng thay vì giao diện người dùng, trên Windows. Đầu ra tiêu chuẩn Unix thường được sử dụng như một đường ống dữ liệu ẩn danh. Dos và Windows không thường xuyên sử dụng này. Như bạn đã học. –