Форум: "WinAPI";
Текущий архив: 2003.11.20;
Скачать: [xml.tar.bz2];
ВнизКак можно наиболее быстро оценить количество строк в текстовом Найти похожие ветки
← →
Alexander (2003-09-23 15:11) [0]файле?
← →
[lamer]Barmaglot (2003-09-23 15:18) [1]Длинна строки фиксирована?
← →
Alexander (2003-09-23 15:23) [2]Ну конечно она фиксирована каким-то значением, только я его не знаю.
структура файла такая: в одной линии восемь строковых значений разделённые табами
← →
nikkie (2003-09-23 15:29) [3]разницу слов "фиксирована" и "ограничена" объяснять не надо? :)
← →
Alexander (2003-09-23 15:36) [4]Нет не надо.
Если бы была строгая фиксация - там можно было бы размер файла разделить на длину строки.
← →
Unknown (2003-09-23 15:37) [5]проексперементируй всеми способами какими знаешь(напимер 1.readln каждой записи 2) загрузка в память например в TStringList) оцени возможность использования того или иного алгоритма в зависимости от размера файлов, памяти и быстродействии машины и т.д
← →
[lamer]Barmaglot (2003-09-23 15:40) [6]Иначе только поиск и подсчет по всему файлу End Of Line"ов...
Есть просто более быстрые алгоритмы поиска. Например боуэра-мура...
← →
Anatoly Podgoretsky (2003-09-23 15:45) [7]А не надо искать, readln делает это автоматом и с приличной скоростью, при малым требованиям к ресурсам.
← →
Alexander (2003-09-23 15:45) [8]Поиск мне не нужет, мне просто хочется очень большой текстовый файл с данными загружать используя поток и при этом отображать процентовку загрузки.
to Unknown: нужно на API
← →
Unknown (2003-09-23 15:52) [9]>>нужно на API
У Пачеко и Тейксейры есть пример очень быстрово строки в файле в потоке, можно использовать примерно то же самое
← →
Anatoly Podgoretsky (2003-09-23 15:54) [10]Alexander © (23.09.03 15:45) [8]
В таком случае неверный подход к проблеме, тебе вообще не нужно количество строк, достаточно знать размер файла и после считывания каждой строки корректировать позицию на размер строки.
"нужно на API" апи не поддерживает работу со строками, только текстовые файлы Паскаля это делают.
← →
[lamer]Barmaglot (2003-09-23 15:56) [11]Индексируй...
При первом чтении считай при последующих используй записанное ранее число записей для вывода загрузки...
Или делай как IExplorer...
← →
Alexander (2003-09-23 16:04) [12]to Anatoly Podgoretsky
Да, с размером действительно получится нормально
← →
Songoku (2003-09-23 18:59) [13]Тебе нужно пробежать по строке и проверять на 13 если да то следуёщий сивлол на 10 если тоже да то это конец одной строки!
Если тебе не понятно то я магу потом привисти пример!
← →
Evgeny (2003-09-24 09:26) [14]>Anatoly Podgoretsky © (23.09.03 15:45) [7]
>А не надо искать, readln делает это автоматом и с приличной >скоростью, при малым требованиям к ресурсам.
К сожалению с большими файлами ReadLn не проходит.
>Songoku © (23.09.03 18:59) [13]
>Тебе нужно пробежать по строке и проверять на 13 если да то >следуёщий сивлол на 10 если тоже да то это конец одной строки!
>Если тебе не понятно то я магу потом привисти пример!
Желательно искать только 10, 13 имеется не во всех текстовых файлах.
← →
Songoku (2003-09-25 23:14) [15]Всё теперь я полностью оттимизировал свой код. Делов том что я зад о соглошениях о вызывах.
вот ана сам, самая быстрая!
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;
← →
Anatoly Podgoretsky (2003-09-25 23:38) [16]Evgeny © (24.09.03 09:26) [14]
Это почему же, чем так большие файлы не совместимы с ReadLn
И вот это
Желательно искать только 10, 13 имеется не во всех текстовых файлах.
Почему бы не сказать так
Желательно искать только 13, 10 имеется не во всех текстовых файлах.
Чем это утверждение хуже и к тому же точно также соответствует истине.
А может мы все таки говорим про ДОС файлы, при чем тут Макинтош и Юникс.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.11.20;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c