|
Вернулся
1751 / 647 / 45
Регистрация: 10.09.2021
Сообщений: 2,800
|
||||||
Функция подсчёта количества строк в файле на VB6 (для всех кодировок файлов)03.03.2023, 18:02. Показов 1876. Ответов 25
Метки нет (Все метки)
Всем привет! В моих проектах, мне иногда надо подсчитывать количество строк в файле. Я очень долго искал самый быстрый способ это сделать. Особенно когда файлы по 50-100 МБ и количество строк в этих файлах доходит до миллиона или даже больше... Усложняется ситуация тогда, когда файлы имеют разные кодировки. Сейчас я написал две функции для ANSI и UTF8 кодировки и для UTF16.
В этой функции я сразу здесь ищу, символы перехода на новую строку, сразу в байтовом массиве. Без лишних присвоений и копирований в строку (так экономится и память и скорость). Думал также сделать, искать в байтовом массиве через встроенную функцию InStr но не получилось! Функция InStr не ищет в байтовом массиве, а ищет только в строке! Поэтому я хотел бы узнать, почему функция InStr не ищет в байтовом массиве? Если байтовый массив это массив содержимого файла.
0
|
||||||
| 03.03.2023, 18:02 | |
|
Ответы с готовыми решениями:
25
Написать программу подсчета количества строк в тексте в бинарном файле
Функция замены всех отрицательных элементов массива нулями и подсчета количества замен |
|
787 / 308 / 17
Регистрация: 21.01.2023
Сообщений: 530
|
|
| 04.03.2023, 12:06 | |
|
0
|
|
|
Вернулся
1751 / 647 / 45
Регистрация: 10.09.2021
Сообщений: 2,800
|
|
| 04.03.2023, 12:48 [ТС] | |
|
0
|
|
|
Вернулся
1751 / 647 / 45
Регистрация: 10.09.2021
Сообщений: 2,800
|
|||||||
| 04.03.2023, 14:30 [ТС] | |||||||
|
Добавлено через 1 час 13 минут Или вот самая простая функция с обычным циклом. Но она будет только в натив-коде более ни менее быстро работать.
Добавлено через 17 минут То есть у меня возникает вопрос, а может ли быть в тексте файла Chr(10) не относящийся к переходу на следующею строку?
0
|
|||||||
|
Вернулся
1751 / 647 / 45
Регистрация: 10.09.2021
Сообщений: 2,800
|
|||||||
| 04.03.2023, 15:47 [ТС] | |||||||
|
Итак если переход на новую строку в ANSI файлах это 0D 0A. Будем искать именно 0D 0A для начала. Потом если переход на новую строку в файлах UTF16 LE это 0D 00 0A 00, а в файлах UTF16 BE это 00 0D 00 0A то мы видим что во всех вариантах UTF16 переход на новую строку включает в себя три символа 0D 00 0A это верняк, будет определять как в UTF16 LE так и в UTF16 BE. Поэтому я написал такую функцию:
Добавлено через 39 минут Единственный минус этой функции CountStrsFromFileUniversal получается что если в файлах будет один байт 0A или 0D для перехода на новую строку, то функция не будет работать получается так как она ищет именно vbCrLf то есть 0D 0A. Но зато во всех кодировках видит. А если искать только 0A то в UTF16 кодировках уже может немного неправильно определять, но не во всех файлах тоже... А моя эта функция во всех файлах определяет верно где переход строки это именно 0D 0A. Добавлено через 7 минут Может тогда нужно для ANSI и UTF8 искать просто 0A а для UTF16 искать просто 00 0A? Но для ANSI тогда можно искать так же и просто 0D тоже. Вдруг у кого будет такой символ перехода просто 0D. Скорее всего для ANSI лучше всего искать просто 0A или 0D а для UTF16 просто 00 0A или просто 0D 00. Скорее всего так лучше всего будет.
0
|
|||||||
| 04.03.2023, 15:47 | |
|
Функция для подсчета суммы и количества элементов больше K Рекурсивная функция для подсчета количества в структуре TreeView Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|
|
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока
Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
|
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
|
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат»
Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
|
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
|