Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.016 c
3-65730
Andrew1_1
2003-11-01 18:43
2003.11.20
BDE по сети


4-66167
Pohil
2003-09-24 12:34
2003.11.20
Как мне узнать что винда обновила рабочий стол?


9-65685
The Kinslayer
2003-05-13 03:17
2003.11.20
О GLScene


1-66011
goliath
2003-11-10 10:40
2003.11.20
TreeList. ОЧЕНЬ НУЖНО !!!


14-66081
Eagle Owl
2003-10-29 19:37
2003.11.20
Операционная система...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский