Модератор: Модераторы
Cheb писал(а):TMemoryStream ?
со стандартного ввода поступают данные, за один заход боюсь что их не смогу обработать,
да еще когда со стандарнтного ввода данные поступают не могу конец файла поймать
Mayor писал(а):while not eof do - не срабатывает - чем можно заменить?
shade писал(а):Mayor писал(а):while not eof do - не срабатывает - чем можно заменить?
Попробуй заменить на while not seekeof do, только учти, что слово seek там не случайно... он пропускает все пробельные символы...
а никак стандартный ввод не приравнять к file of byte переменной?
Reset(f);
FileRec(f).Handle := StdInputHandle;
program project2;
{$APPTYPE CONSOLE}
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ add your units here };
var
si, so: THandleStream;
sm: TMemoryStream;
begin
si := THandleStream.Create(StdInputHandle);
so := THandleStream.Create(StdOutputHandle);
sm := TMemoryStream.Create;
sm.LoadFromStream(si); // грузим в память
so.CopyFrom(sm, sm.Size); // выводим в stdout
sm.Free;
so.Free;
si.Free;
end.
program Project1;
{$mode objfpc}{$H+}
var ss: array of string;
n: LongInt;
begin
SetLength (ss, 0);
n:=0;
while not eof(Input) do
begin
SetLength(ss, n+1);
Readln(ss[n]);
inc(n)
end;
for n:=0 to High(ss) do Writeln(ss[n]);
end.
program test;
var
s: string;
ch: char;
begin
s := '';
SetTextLineEnding(input, #13);
while not eof do
begin
read(ch);
s := s + ch;
end;
writeln(s);
end.
program test;
{$mode objfpc}
function ReadInput: AnsiString;
var
s: array of char;
capacity: longint;
RealLength: longint;
begin
RealLength := 0;
capacity := 1024;
SetLength(s, capacity);
SetTextLineEnding(input, #13);
while not eof do
begin
if RealLength = capacity then
begin
SetLength(s, capacity + capacity div 4 + 1);
end; // if
read(s[RealLength]);
Inc(RealLength);
end;
SetString(Result, @s[0], RealLength);
end;
var
text: AnsiString;
begin
text := ReadInput;
writeln('Input size in bytes: ', Length(text));
writeln('content:');
write(text);
writeln('----------------- end ---------------');
end.
да еще когда со стандарнтного ввода данные поступают не могу конец файла поймать
А он там вообще бывает, этот конец?
И вообще - кто пишет данные, которые ты получаешь через стандартный ввод?
v-t-l писал(а):2shade
В WinXP не работает.
Бинарные данные проходят не полностью.
Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4