Страница 1 из 1

чтение из файла снизу вверх

Добавлено: 25 мар 2007, 12:12
itwork
ВОт этот отрывок кода - чтение файла с верху вниз:

Код: Выделить всё

    assign(f,'a.txt');
    reset(f);
    while not eof(f) do
    begin
    readln(f,tmp);
    writeln(tmp);
    end;
    close(f);
Люди а как написать код, чтоб наоборот происходило чтение файла снизу вверх???

Re: чтение из файла снизу вверх

Добавлено: 26 мар 2007, 08:38
LAngel
построчно или посимвольно?

Re: чтение из файла снизу вверх

Добавлено: 26 мар 2007, 10:37
Хыиуду
Из типизированного файла можно с помощью функции seek. Из текстового файла - имхо, только если считать все строки в массив и его задом наперед просматривать.

Re: чтение из файла снизу вверх

Добавлено: 26 мар 2007, 15:10
Колядин Максим
Вот код, который показывает считанные из файла строки задом на перед, то есть, корректно отображать содержимое файла сверху вниз будет только если символов в файле не более 256. Если символов в текстовом документе больше, тогда программа будет отображать по порядку по 256 символов наоборот.

Код: Выделить всё

uses crt;
var  i: integer;
s: string;
f: text;
begin
clrscr;
assign(f, 'a.txt'); reset(f);
while not eof(f) do begin
while not eoln(f) do begin
read(f,s);
for i:= length(s) downto 1 do write(s[i]);
end;
readln(f);
end;
readkey;
end.

Re: чтение из файла снизу вверх

Добавлено: 27 мар 2007, 06:46
SergeyS
&quot писал(а):Люди а как написать код, чтоб наоборот происходило чтение файла снизу вверх???
Это чисто академический вопрос или требуется сделать что-то полезное? Если файл не очень большой, то проще прочитать его целиком, а потом обрабатывать задом наперёд. Если это очень большой файл (например лог файл на несколько мегабайт), то открываешь файл, seek'ом (как и писал Хыиуду) переходишь в конец файла - 1024 байта (или нужный тебе размер блока) и читаешь данные, дальше работаешь уже только с прочитанным блоком. Писать готовый код лениво.