пятница, 30 мая 2014 г.

Delphi быстро читаем stdin

Для консольных приложений бывает необходимо быстро считать входные данные.
Сразу к коду:
const
  rbsize = 65355;
var
  d: longint;
  rb: array [0 .. 85 * rbsize] of char;
procedure ReadInput;
var
  PInput: ^TTextRec;
  c: byte;
begin
  d := 0;
  PInput := @Input;
  PInput^.BufSize := 0;
  while PInput^.BufEnd = PInput^.BufSize do
  begin
    SetTextBuf(Input, rb[d], rbsize);
    Read(c);
    Inc(d, PInput^.BufEnd);
    PInput^.BufPos := PInput^.BufEnd;
  end;
end;

После выполнения процедуры ReadInput массив rb[0..d] будет содержать данные из файловой переменной Input(stdin). Размер массива rb статичен и может быть изменен в зависимости от задачи.

Комментариев нет:

Отправить комментарий