Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.12.26;
Скачать: CL | DM;

Вниз

Как начать считывать текстовый файл с нужной строки   Найти похожие ветки 

 
ruslan_as   (2010-09-29 09:14) [0]

У меня постоянно обновляющиеся log-файлы (информация дописывается в конец файла). Моя задача его считывать с периодичностью.
Подскажите, как начать считывать файл не с первой строки, а скажем с 1000-й?

Считываю так

if OD.Execute then
 begin
  AssignFile(InpFile,OD.FileName);
  Reset(InpFile);
  while not EOF(InpFile) do
    begin
         ReadLn(InpFile,ss);
         ....
Можо конечно добавить счетчик и в пустую его гонять до 1000, но это трата времени. Может другие варианты есть?


 
MBo ©   (2010-09-29 09:32) [1]

Если строки разной длины, то в любом случае все сведется к подсчету строк (или символов переводов строки). Если позволяет логика, то некая оптимизация  - запоминать позиции определенных номеров строк в файле.


 
ruslan_as   (2010-09-29 09:39) [2]

Строки одинаковой длинны


 
MBo ©   (2010-09-29 09:51) [3]

>Строки одинаковой длинны
Тогда все проще - для чтения нужной строки не использовать TextFile, а встать в нужное место файла, и прочитать кусок заданной длины в строку.
Например, TFileStream несложно использовать.


 
ruslan_as   (2010-09-29 10:38) [4]

> MBo ©

Ок. Подумаю... Спасибо!


 
Anatoly Podgoretsky ©   (2010-09-29 11:40) [5]

> ruslan_as  (29.09.2010 09:14:00)  [0]

Тут цикл FOR нужен на 999 иттераций.

Других вариантов нет.


 
Anatoly Podgoretsky ©   (2010-09-29 11:41) [6]

> MBo  (29.09.2010 09:32:01)  [1]

А дальше что, текстовые файлы не поддерживают позиционирование, переходить
на нетипизированые, но это не соответствует вопросу.


 
Anatoly Podgoretsky ©   (2010-09-29 11:42) [7]

> ruslan_as  (29.09.2010 09:39:02)  [2]

Тогда отказаться от текстовых файлов в пользу типизированых


 
Гость   (2010-09-29 19:13) [8]

считывайте файл с помощью TStrings, в итоге кажда строка файла будет в отдельном элементе TStrings и для обращения к нужной используйте TStrings.strings[i]


 
TStrings   (2010-09-29 21:16) [9]

>>Гость   (29.09.10 19:13) [8] считывайте файл с помощью TStrings, в итоге кажда строка файла будет в отдельном элементе TStrings и для обращения к нужной используйте TStrings.strings[i]

Автор как бы просто так написал: "Подскажите, как начать считывать файл не с первой строки, а скажем с 1000-й?". И вправду, чего мелочиться-то?
Не говоря уже о том, что TStrings - абстрактный класс.


 
MsGuns ©   (2010-09-29 21:33) [10]

Если это лог, то и размер у него соответствующий - через TStrings/TStringList будут тормоза недетские
ИМХО, лучшее решение - таблица на SQL-сервере


 
TStrings   (2010-09-29 22:39) [11]

Удалено модератором


 
MsGuns ©   (2010-09-30 00:21) [12]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2010.12.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
3-1250065947
RDen
2009-08-12 12:32
2010.12.26
Доброго всем времени суток.


2-1285687422
invincible_11
2010-09-28 19:23
2010.12.26
Проблема С Базой


4-1242593590
olevacho_
2009-05-18 00:53
2010.12.26
Запуск от другого пользователя


2-1285939658
IceBeerg
2010-10-01 17:27
2010.12.26
Не устанавливается стиль окна


15-1284722875
неокубинец
2010-09-17 15:27
2010.12.26
Частота тембра