Форум: "Начинающим";
Текущий архив: 2010.12.26;
Скачать: [xml.tar.bz2];
ВнизКак начать считывать текстовый файл с нужной строки Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c