Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

прочитать 2 последние строчки текстового файлы


Padre ©   (2006-04-27 20:46:00) 

Как я могу узнать значение 2х последних строчек текстового файла?


jack128   (2006-04-29 16:04:00) [1]

kester ©   (28.04.06 20:08) [7]
затем, что это для больших файлов - это гараздо быстрее будет работать.. Тут где то рядом как раз пробегал вопрос про сортировку 2 гиговых текстовых файлов..


Германн   (2006-04-29 01:50:00) [2]


> Anatoly Podgoretsky ©   (28.04.06 21:32) [8]
>
> Для этого надо прочитать все предыдущие или отказаться от
> текстовых файлов в пользу бинарных и читать с конца. Для
> больших файлов идеальное решение.
>

Добавлю ещё своё ИМХО.
Нужно, в первую очередь, как обучали нас на военной кафедре, "Поставить задачу"!
Задача "прочитать две последние строки" кажется мне очень уж не мотивированной!
А уж после следует "Принять решение"!


Anatoly Podgoretsky   (2006-04-28 21:32:00) [3]

Для этого надо прочитать все предыдущие или отказаться от текстовых файлов в пользу бинарных и читать с конца. Для больших файлов идеальное решение.


kester   (2006-04-28 20:08:00) [4]

jack128
Да, ты прав. Так тогда какая разница, использовать LoadFromFile или самому корячиться))


Vetas   (2006-04-28 17:40:00) [5]


Var s,s1:string;
f:textfile;
Begin
s:='';s1:='';
assignfile(f,'Имя файла');
reset(f);
while not eof(f) do
Begin
s1:=s;
s:=readln(f,s);
End;
CloseFile(f);
// В s - последняя строка, в s1 - предпоследняя.
End;


jack128   (2006-04-28 14:50:00) [6]

kester ©   (27.04.06 23:48) [3]
Но, посимвольно, во-первых, лишний загруз процессора (хотя и совершенно незначительный, но все же),

наивная духа.  А как ты думаешь TStrings.LoadFromFile весь файл на строки разбивает? Точно так же посимвольно анализирует содержимое файла..


balepa   (2006-04-28 06:06:00) [7]


> kester ©   (27.04.06 23:48) [3]
> загруз своих собственных мозгов =)

Так мозги надо тренировать.


kester   (2006-04-27 23:48:00) [8]

по-моему, проще всего так:

var
t:TStringList;
begin
t:=TStringList.Create;
t.LoadFromFile('xfile.txt');
showmessage(t.Strings[t.count-1]);   //последняя строка
showmessage(t.Strings[t.count-2]);   //предпоследняя строка
t.Free;
end;

третий способ интересен =)
Но, посимвольно, во-первых, лишний загруз процессора (хотя и совершенно незначительный, но все же), во-вторых, загруз своих собственных мозгов =)


jack128   (2006-04-27 22:23:00) [9]

Virgo_Style ©   (27.04.06 21:09) [1]
нормальный способ..  Правда чтение лудше буффиризировать.. А то посимвольно читать из файла - не кузяво как то..


Virgo_Style   (2006-04-27 21:09:00) [10]

Например,
- загрузить все (TStringList.LoadFromFile) и выбрать нужное.
- читать построчно, сохраняя текущую и предыдущую, до самого конца.
- открыть как бинарный, читать посимвольно, смещаясь назад, пока не доберешься до начала или третьего символа/комбинации символов, обозначающих новую строку.

Кстати, буду рад комментарию по поводу способа 3... Чудится мне в нем какой-то подвох, но не уверен %-)


Наверх

Титульная страница Поиск, карта сайта Написать письмо