Come scrivere su stdout dall'applicazione console Delphi?Come scrivere dati binari nello stdout in Delphi?
Ecco cosa ho provato. Ho truccato questa semplice applicazione di test in base alle informazioni che ho trovato, per leggere un file dal disco e l'output per consolare 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.
Ma per qualche motivo viene a mancare. Potresti per favore indirizzarmi nel modo corretto di scrivere su stdout?
curioso PERCHE 'vuoi scrivere il rumore binario sulla console? Hai menzionato qualcosa sul text to speech. Perché non i pipe nominati? –
Quali vantaggi hanno le pipe denominate rispetto allo stdout? – Kromster
Progettato per il trasferimento di dati gravi invece delle interfacce utente, su Windows. L'output standard Unix viene utilizzato di routine come pipe di dati anonimi. Dos e Windows non lo usano abitualmente. Come hai imparato. –