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

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

Как можно наиболее быстро оценить количество строк в текстовом


Alexander ©   (2003-09-23 15:11:00) 

файле?


Anatoly Podgoretsky   (2003-09-25 23:38:00) [1]

Evgeny © (24.09.03 09:26) [14]
Это почему же, чем так большие файлы не совместимы с ReadLn

И вот это
Желательно искать только 10, 13 имеется не во всех текстовых файлах.
Почему бы не сказать так

Желательно искать только 13, 10 имеется не во всех текстовых файлах.

Чем это утверждение хуже и к тому же точно также соответствует истине.
А может мы все таки говорим про ДОС файлы, при чем тут Макинтош и Юникс.


Songoku   (2003-09-25 23:14:00) [2]

Всё теперь я полностью оттимизировал свой код. Делов том что я зад о соглошениях о вызывах.
вот ана сам, самая быстрая!

function CountOfLines(s:pchar):DWORD; Assembler;
asm
push ecx
push esi
xor ecx,ecx
lea esi,[eax]
@zycle:
lodsb
cmp al,13
jne @no13
mov al,[esi]
cmp al,10
jne @no13
inc ecx
@no13:
test al,al
je @endz;
jmp @zycle
@endz:
sub esi,3
xor eax,eax
mov ax,[esi]
cmp ax,$A0D
je @finish
inc ecx
@finish:
mov eax,ecx
pop esi
pop ecx
end;


Evgeny   (2003-09-24 09:26:00) [3]

>Anatoly Podgoretsky © (23.09.03 15:45) [7]
>А не надо искать, readln делает это автоматом и с приличной >скоростью, при малым требованиям к ресурсам.

К сожалению с большими файлами ReadLn не проходит.

>Songoku © (23.09.03 18:59) [13]
>Тебе нужно пробежать по строке и проверять на 13 если да то >следуёщий сивлол на 10 если тоже да то это конец одной строки!
>Если тебе не понятно то я магу потом привисти пример!

Желательно искать только 10, 13 имеется не во всех текстовых файлах.


Songoku   (2003-09-23 18:59:00) [4]

Тебе нужно пробежать по строке и проверять на 13 если да то следуёщий сивлол на 10 если тоже да то это конец одной строки!
Если тебе не понятно то я магу потом привисти пример!


Alexander   (2003-09-23 16:04:00) [5]

to Anatoly Podgoretsky
Да, с размером действительно получится нормально


[lamer]Barmaglot   (2003-09-23 15:56:00) [6]

Индексируй...

При первом чтении считай при последующих используй записанное ранее число записей для вывода загрузки...

Или делай как IExplorer...


Anatoly Podgoretsky   (2003-09-23 15:54:00) [7]

Alexander © (23.09.03 15:45) [8]
В таком случае неверный подход к проблеме, тебе вообще не нужно количество строк, достаточно знать размер файла и после считывания каждой строки корректировать позицию на размер строки.

"нужно на API" апи не поддерживает работу со строками, только текстовые файлы Паскаля это делают.


Unknown   (2003-09-23 15:52:00) [8]

>>нужно на API
У Пачеко и Тейксейры есть пример очень быстрово строки в файле в потоке, можно использовать примерно то же самое


Anatoly Podgoretsky   (2003-09-23 15:45:00) [9]

А не надо искать, readln делает это автоматом и с приличной скоростью, при малым требованиям к ресурсам.


Alexander   (2003-09-23 15:45:00) [10]

Поиск мне не нужет, мне просто хочется очень большой текстовый файл с данными загружать используя поток и при этом отображать процентовку загрузки.
to Unknown: нужно на API


[lamer]Barmaglot   (2003-09-23 15:40:00) [11]

Иначе только поиск и подсчет по всему файлу End Of Line"ов...
Есть просто более быстрые алгоритмы поиска. Например боуэра-мура...


Unknown   (2003-09-23 15:37:00) [12]

проексперементируй всеми способами какими знаешь(напимер 1.readln каждой записи 2) загрузка в память например в TStringList) оцени возможность использования того или иного алгоритма в зависимости от размера файлов, памяти и быстродействии машины и т.д


Alexander   (2003-09-23 15:36:00) [13]

Нет не надо.
Если бы была строгая фиксация - там можно было бы размер файла разделить на длину строки.


nikkie   (2003-09-23 15:29:00) [14]

разницу слов "фиксирована" и "ограничена" объяснять не надо? :)


Alexander   (2003-09-23 15:23:00) [15]

Ну конечно она фиксирована каким-то значением, только я его не знаю.
структура файла такая: в одной линии восемь строковых значений разделённые табами


[lamer]Barmaglot   (2003-09-23 15:18:00) [16]

Длинна строки фиксирована?


Наверх

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