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

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

Количество строк [D5, Win95/98, WinME, NT4, Win2k, WinXP]


UK-AAV ©   (2005-07-20 22:31:00) 

В программе требуется часто считать кол-во строк в текстовом файле при этом важна скорость. Файл примерно состоит из последовательности строк
1) макс 420 символов
2) 12 символов
3) 16 символов
всего строк около 1000.


MegaVolt   (2005-07-21 11:39:00) [1]

А кто изменяет этот файл? Внешняя программа а ты должен его анализировать в реальном времени?

Я так понимаю весь файл 450000 кило. Время анализа будет ограниченно только скоростью веника. Типовой веник 25М/s выдаст на ура. Значит 0.45/25=0,018 сек. Это медленно? А потом файл ещё будет закеширован виндой и работа с ним будет идти вообще как с памятью.

Тебе нужна какая скорость?


Alx2   (2005-07-21 10:44:00) [2]

UK-AAV   (21.07.05 10:17) [13]
> первые строки всегда разной длинны

Одинаковость и не требуется

>если FileSize начал отличаться..

Имхо, самое оптимальное, если история этих изменений FileSize хранится.


isasa   (2005-07-21 10:32:00) [3]

1.Следить за изменением файла.
2.Читать в память низкоуровневыми IO ф-циями типа BlockRead.
3. а потом хоть

Count:=0;
for i:=BuffLen downto 0 do if Buff[i]=#$0A then inc(Count);


UK-AAV   (2005-07-21 10:17:00) [4]

To Alx2
 первые строки всегда разной длинны

Наверное сделаю по совету evvcom. Только в моем случае будет проще, если FileSize начал отличаться, то кол-во строк точно увеличевается на 3.

всем спасибо


Anatoly Podgoretsky   (2005-07-21 09:03:00) [5]

Пусть сначала ответит на 5 и 10


Alx2   (2005-07-21 09:01:00) [6]

UK-AAV   (20.07.05 22:31)

Memory Mapped File + количество концов строк


Anatoly Podgoretsky   (2005-07-21 08:53:00) [7]

UK-AAV   (21.07.05 08:32) [7]
Следует ли понимать, что все строки строго такой структуры и размера? Тогда FileSize / n


evvcom   (2005-07-21 08:46:00) [8]


> В программе требуется часто считать кол-во строк в текстовом
> файле при этом важна скорость.

У меня была подобная задача. Самым быстрым способом я посчитал анализ файла с созданием своеобразного файла индексов. В нем записывается дата/время изменения txt-файла, его длина (для определения факта его изменения), признак валидности файла, а дальше количества и смещения начал строк. Естественно твой инд.файл должен быть по максимуму адаптирован под твой txt-файл.


Джо   (2005-07-21 08:41:00) [9]


> а если файл для этого загружать как file of string?

Судя по твоему описанию, он никак не является file of string. Кроме того, в данной декларации можно использовать только ShortString - явно или неявно.


UK-AAV   (2005-07-21 08:32:00) [10]

to kull
Файле лежит инфа:
строка с текстом(макс 420 символов
строка данных 12
строка данных 16
строка с текстом(макс 420 символов
строка данных 12
строка данных 16
.............
а если файл для этого загружать как file of string?


Германн   (2005-07-21 02:00:00) [11]

2 UK-AAV   (20.07.05 22:48) [2]
Может быть стоит читать сначала весьфайл как бинарный, а послеискать в нем "количество переводов строк"?


Anatoly Podgoretsky   (2005-07-21 00:09:00) [12]

UK-AAV   (20.07.05 22:31)  
В данном случае хорошо подойдет TStringList


kull   (2005-07-20 23:39:00) [13]

А поподробнее про формат файла можно, или он "примерный"? :)


ferr   (2005-07-20 23:24:00) [14]


> UK-AAV   (20.07.05 22:48) [2] [Новое
> сообщение][Ответить]

Вы что-то ещё можете предложить?


UK-AAV   (2005-07-20 22:48:00) [15]

это понятно, но вопрос возник из-за скорости. на медленных компах(pentium 166) частое перечитывание всех байтов очень тормозит. Отсюда и вопрос.


Kerk   (2005-07-20 22:45:00) [16]

Можно считывать побайтно или повордно и считать кол-во переводов строки.


Наверх

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