По VBScript | |
---|---|
LED Автор Сообщений: 204 Дата регистрации: 22.07.2006 |
Всем привет!
Если кто хорошо знает VBScript Помогите решить 1 Как подсчитать количество строк в текстовом файле в VBScript. В общем, как подсчитать количество строк не пробегаясь по всему файлу. Файл очень большой и перебор строк занимает много времени. 2 Какой командой можно выводить сообщение сколько строк пройдено при считывании в текстовом файле. Как бы прототип выражения
Как это возможно применить в VBScript при считывании строк в текстовом файле. С помощью какого оператора, команды. Заранее спасибо. Исправлено 1 раз(а). Последнее : LED, 27.08.18 07:19 |
Re: По VBScript | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
"Не пробегаясь" - загружая файл целиком. Хотя в памяти потом все равно "пробегаться" придется.
Т.е. что-то типа такого: www.cyberforum.ru А почему именно VBScript? В фоксе в принципе можно проделать все тоже довольно быстро. И не только через FILETOSTR(), а и через старый добрый хитрый APPEND. Т.е. скажем как-то так:
Кстати, если хочется "видеть процесс", то при большом количестве строк это же как раз и будет вызывать основные тормоза. Или для чего такое надо? Что же касается прямого аналога WAIT - простой аналогичной команды в VBS, сколько помнится нет, видимо только прописывать самому вывод переменной в создаваемое окошко. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: По VBScript | |
---|---|
LED Автор Сообщений: 204 Дата регистрации: 22.07.2006 |
Crispy спасибо.
Мне надо на VBScript Файл большой. На перебор строк уходит много времени. Есть ли в VBScript команды типа
Я в ИНЕТе также делал поиск, но не нашел пока решения для этой задачи. Можно ли решить этот вопрос с помощью API функций? API функции можно вставлять в VBSсript. Самое интересное что с помощью блокнота за несколько секунд можно встать на конец файла и если включена строка состояния легко узнать количество строк. Значит можно как бы написать такой фрагмент. Исправлено 1 раз(а). Последнее : LED, 27.08.18 10:37 |
Re: По VBScript | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Это только снаружи просто. Фактически же, при этом открывается файл. И далее, либо блоками, либо целиком (чаще всего) считывается в память. Затем пробегаясь по нему в цикле и используя наращиваемую переменную, сохраняем ее, как число строк. В коде по ссылке для такого нужно использовать первый способ, сканируя считанный в память файл и проверяя наличие перевода строки в цикле с наращиванием переменной числа строк. Обычно кстати в блокнотах она выводится в строке статуса. Т.е. не нужно даже делать что-то типа Ctrl+End - просто в настройках включить статус. Иначе никак не "добыть" ее, кроме как сканируя так или иначе по строкам, поскольку сам формат текстового файла не предполагает хранения числа своих строк в самом себе. Такое есть только в специфических форматах наподобие dbf. Хотя возможно конечно и есть какие-то уже готовые API, упрощающие работу по подсчету строк. Попробуй пргуглить, может и найдется что. Кстати по поводу кода фокса выше - там можно даже не использовать команду подсчета, а просто воспользоваться системной переменной _TALLY - которая сразу же и даст число обработанных APPEND строк. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) Исправлено 3 раз(а). Последнее : Crispy, 27.08.18 11:13 |
Re: По VBScript | |
---|---|
ВладимирС Сообщений: 1693 Дата регистрации: 03.11.2005 |
Блокнот тоже загружает файл.. Если ты Блокнотом встал в конец файла, значит файл небольшой. У меня файлы даже notepad-ом не загружаются. Говорит, что слишком большой. |
Re: По VBScript | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Попробуй вместо него установить вот этот: akelpad.sourceforge.net Там есть разные виды установки - замена стандартного блокнота с ассоциациями или просто независимая установка, как приложение. Т.е. можно скажем на пробу вначале поставить независимым. Хотя я например им уже лет 15 пользуюсь без проблем вместо блокнота, на порядки удобнее. Вдобавок постоянно совершенствуется, есть куча плагинов в комплекте, которыми можно нарастить функционал, хотя и без того это уже и так серьезный текстовый процессор. Но при желании можно скажем добавить даже и проверку орфографии, подсветку синтаксиса, можно также писать на скриптовом языке (очень похож на VBS) и какие-то свои плагины. Грузит же любые файлы почти мгновенно. Просто у него другой способ подгрузки - не целиком, а поблочно. Аналогично сделан например и редактор в FAR. Что позволяет открывать огромные файлы. Поскольку фактически грузится не весь объем, а только нужный для просмотра-редактирования. Нечто подобное было реализовано также например и в BROWSE в FPD, что позволяло визуально работать с большими таблицами в миллионы записей еще на древних машинах. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: По VBScript | |
---|---|
ВладимирС Сообщений: 1693 Дата регистрации: 03.11.2005 |
Большое спасибо. Но пока меня устраивает FAR и notepad. notepad - тоже стал большие файлы грузить. Но за ссылку СПАСИБО. Как не будет загружаться - воспользуюсь. |
Re: По VBScript | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Можно и раньше. Просто, в Акельпаде можно легким движением руки делать грандиозные работы с текстом. С теми же html тоже полезен бывает. Скажем, помечаешь в нем подгрузку плагина сортировки, и нажав Ctrl+Shift+A - выделенные строки мгновенно сортируются по возрастанию! Ну или с D - по убыванию (более строгая сортировка Ctrl+Shift+Alt+A/D). Для меня бывает очень полезным, чем грузить все в офис куда-то для такого. Или встроенная функция замены регистра букв на большие/маленькие/первые буквы большие. Или вставить дату-время в настроенном формате по Ctrl+D. Также поиск-замена по Ctrl+H позволяет вставлять в поиск-замену еще и символы esc-последовательности! Что дает возможность без всякого офиса искать и заменять куски скажем с символом перевода строки или табуляции. Вещь необычно полезная при работе с текстовыми файлами. В общем это надо просто самому один раз увидеть. Про автоопределение кодировки уж само собой. Можно также вручную в статус-строке переоткрывать или сохранять с большим числом кодировок. Кстати если работаешь иногда в том числе с китайскими или подобными символами - просто ставишь шрифтом Arial Unicode. Шрифт удобно масштабируется Ctrl+ +/-. Окно запоминается. Запоминается также позиция курсора в тексте. При установке в настройках может запоминаться даже раскладка! Что удобно, если скажем пишешь только по русски или наоборот по английски, открыл файл - а он стоит уже на русской раскладке, если русский текст, или английской если английской. При больших текстах ускоряется работа. Закрывается по умолчанию - нажатием Esc. Что тоже привычнее обычно. Блокнот невозможностью этого всегда раздражает. Хочешь быстро открыть-закрыть несколько файлов подряд и елозишь мышкой, лишние телодвижения. Короче - однозначно удобнее с ним работать с текстом, чем при стандартном блокноте. А уж если пощупать плагины - это и вовсе может шокировать своими возможностями. Чтобы ставилось сразу с ними - лучше скачать многоязыковой установщик. Если же скачать только русский - там плагинов нет, надо отдельно качать пакет с ними и добавлять в папку. Поэтому советую не откладывать в долгий ящик знакомство с Акельпадом, тем более сам установщик - всего-то 1.2 МБ! Поистине гениальная программа. Вот это настоящее программирование! не то что у создателей современных многогигабайтных монстров, еле ворочающихся на самых крутых машинах. Он кстати еще легко портируемый. Достаточно поставить в настройках сохранять настройки в ini-файл, а не в реестр - и можно носить его хоть на флешке с теми же настройками. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) Исправлено 4 раз(а). Последнее : Crispy, 27.08.18 13:52 |
Re: По VBScript | |
---|---|
LED Автор Сообщений: 204 Дата регистрации: 22.07.2006 |
Нет не нашел ничего подходящего.
Наверно только перебор строк. Всем спасибо |
Re: По VBScript | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Интересно, а как ты себе представляешь процесс определения количества строк в файле без их "перебора"? Ну как минимум без поиска символов перевода строки в полностью считанном файле (не суть важно - за раз считанном, или "постепенно" по порциям читаемом)
А тормоза - ну так естественно если на каждую найденную строку чего-то в UI "вещать" будет жутко тормозить ------------------ WBR, Igor |
Re: По VBScript | |
---|---|
avatrox Сообщений: 1221 Дата регистрации: 30.12.2014 |
поэтому xml жопа
|
Re: По VBScript | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
При чём тут xml? Там вообще-то переводы строки равно как и отступы необязательны (ну исключая те что "значимые" внутри элементов данных, да и те заменяются иногда "сущностями"), как и в json...
------------------ WBR, Igor |
Re: По VBScript | |
---|---|
avatrox Сообщений: 1221 Дата регистрации: 30.12.2014 |
Разбор иксэмэля трудный. Затратно
|
Re: По VBScript | |
---|---|
ВладимирС Сообщений: 1693 Дата регистрации: 03.11.2005 |
Хм... Кинь сюда твой файлик XML. Сархивируй предварительно. Возможно даже частями. |
Re: По VBScript | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
В SAX режиме - не так уж трудно и совсем не затратно. Последовательное чтение и всё. "Произвольный доступ" конечно будет затратен - но xml и не задумывался для такого - типа открыть и найти 1 тег из 100500 в гигабайтном файле. Всё же XML в подавляющем числе случаев обрабатывается целиком. ------------------ WBR, Igor |
Re: По VBScript | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
В XMLDom ваще проще паренной репы
------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: По VBScript | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
В DOM режиме большие XML-и не помещаются в память, а если и помещаются, то всё равно очень затратно. Для SAX размер файла не имеет вообще никакого значения. Правда там будет иметь значение то, куда направляется результат разбора Если опять же в структуры памяти, то будет беда. А если таким же потоком наружу, не "запоминая" практически ничего - в другой XML/HTML или в БД - то эффективность не сильно уступает специализированным бинарным файлам - при всех тех плюсах что имеет XML по сравнению с ними (прежде всего гибкость структуры).
------------------ WBR, Igor |
Re: По VBScript | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Вы такие помощники...
>В SAX режиме > В XMLDom вообще проще паренной репы |
Re: По VBScript | |
---|---|
cool1 Сообщений: 316 Дата регистрации: 06.03.2016 |
|
Re: По VBScript | |
---|---|
ВладимирС Сообщений: 1693 Дата регистрации: 03.11.2005 |
Просто интересно, если t.txt - файл размером в 10Gb. То сбоя не будет ? |
© 2000-2024 Fox Club  |