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

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
itwork
Сообщения: 79
Зарегистрирован: 28 дек 2006, 15:20

ВОт этот отрывок кода - чтение файла с верху вниз:

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

    assign(f,'a.txt');
    reset(f);
    while not eof(f) do
    begin
    readln(f,tmp);
    writeln(tmp);
    end;
    close(f);
Люди а как написать код, чтоб наоборот происходило чтение файла снизу вверх???
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

построчно или посимвольно?
С уважением, Lost Angel...
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Из типизированного файла можно с помощью функции seek. Из текстового файла - имхо, только если считать все строки в массив и его задом наперед просматривать.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Вот код, который показывает считанные из файла строки задом на перед, то есть, корректно отображать содержимое файла сверху вниз будет только если символов в файле не более 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.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Аватара пользователя
SergeyS
Сообщения: 196
Зарегистрирован: 21 ноя 2006, 17:12
Откуда: Хакасия, Абакан
Контактная информация:

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