![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте!
Существует текстовый файл. В файле Н-строк. Нужно считать ПОСЛЕДНИЕ 10 строк и вывести в ListView. Как взять последние строки? Спасибо! |
|
#2
|
||||
|
||||
|
Например, читать в циклический буфер из 10 строк. Потом вывести с позиции, на которой остановились.
|
|
#3
|
||||
|
||||
|
Ну можно немного иначе поступить. Открыть файл как набор байт. Метнуться в конец и двигаясь к началу считать символы #13, попутно формируя строки.
|
|
#4
|
||||
|
||||
|
Зачем? Читаем в StringList и берём последние 10 строк и никакого извращения.
|
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
cybermad (13.06.2013)
| ||
|
#5
|
|||
|
|||
|
Цитата:
Ага, а если файл пару гигабайт "весит". Тут надо от задачи смотреть. Если файл маленький, то проще считать весь целиком. Если большой, то зависит от конкретной задачи - как часто надо это делать и можно ли файл держать открытый... |
|
#6
|
|||
|
|||
|
Цитата:
спасибо! так и сделал. файл с содержимым в 78000 строк считывается на ура за 300 мсек. |
|
#7
|
||||
|
||||
|
Код:
var fv: text;
i, l:integer;
s:string;
begin
assign(fv, '1.txt');
reset(fv);
l:=0;
while not eof(fv) do begin inc(l); readln(fv); end;
if l>=11 then begin
for i:=1 to l-11 do readln(fv);
for i:=l-10 to l do begin readln(fv,s); memo1.lines.add(s); end;
end
else for i:=1 to l do begin readln(fv, s); memo1.lines.add(s); end;
end. |
|
#8
|
||||
|
||||
|
Цитата:
|