|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
||||||
Функция подсчёта количества строк в файле на VB6 (для всех кодировок файлов)03.03.2023, 18:02. Показов 2079. Ответов 25
Метки нет (Все метки)
Всем привет! В моих проектах, мне иногда надо подсчитывать количество строк в файле. Я очень долго искал самый быстрый способ это сделать. Особенно когда файлы по 50-100 МБ и количество строк в этих файлах доходит до миллиона или даже больше... Усложняется ситуация тогда, когда файлы имеют разные кодировки. Сейчас я написал две функции для ANSI и UTF8 кодировки и для UTF16.
В этой функции я сразу здесь ищу, символы перехода на новую строку, сразу в байтовом массиве. Без лишних присвоений и копирований в строку (так экономится и память и скорость). Думал также сделать, искать в байтовом массиве через встроенную функцию InStr но не получилось! Функция InStr не ищет в байтовом массиве, а ищет только в строке! Поэтому я хотел бы узнать, почему функция InStr не ищет в байтовом массиве? Если байтовый массив это массив содержимого файла.
0
|
||||||
| 03.03.2023, 18:02 | |
|
Ответы с готовыми решениями:
25
Написать программу подсчета количества строк в тексте в бинарном файле
Функция замены всех отрицательных элементов массива нулями и подсчета количества замен |
|
1024 / 313 / 18
Регистрация: 21.01.2023
Сообщений: 552
|
|
| 04.03.2023, 12:06 | |
|
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 04.03.2023, 12:48 [ТС] | |
|
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|||||||
| 04.03.2023, 14:30 [ТС] | |||||||
|
Добавлено через 1 час 13 минут Или вот самая простая функция с обычным циклом. Но она будет только в натив-коде более ни менее быстро работать.
Добавлено через 17 минут То есть у меня возникает вопрос, а может ли быть в тексте файла Chr(10) не относящийся к переходу на следующею строку?
0
|
|||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|||||||
| 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|