Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Последнюю позицию в списке из 315 строк: - регулярка (с заранее заготовленным выражением) находит мгновенно (от 0 до 16 мс); - циклом (с заранее заготовленным массивом) находит приблизительно за 260-280 мс. Значительный выигрыш в скорости подтвержден.
mishem, почему то не находит Thunderbird, когда это слово стоит последним в списке и если записать с цифрой или цифрами на конце (без пробела или другого знака), например так не найдет: Thunderbird123, а если добавить пустую строку в файле, то уже находит. В чем может быть дело и как это можно преодолеть?
Вадим, то, что регулярка справится быстрее я и не сомневался, иначе можно выбросить Delphi в помойку. Я даже проверять твои результаты не стал, т.к. у меня нет этого плагина Вопрос был в реальном выйгрыше.
ЦитатаPeter ()
Вадим, а вот теперь чисто практически скинь пример для решения ТВОЕЙ задачи (из 300 пунктов) в варианте необушного цикла и регулярки.
Скажи, ты сильно ощутил эту разницу на практике? 280 мс это много? И учти, что в скомпилированном виде необушный скрипт работает заметно быстрее, чем в режиме отладки, а на скорость работы плагина это не влияет.
И посмотри сколько кода потребовалось чтобы составить регулярку и запихать ее в плагин (плюс плагин таскать), и сколько потребовалось кода NB. и времени на его составление? Такой код NB (строчек 5-6 не более) в написании занимает от силы полминуты, а сколько времени составление регулярки?
И резюме можно сделать следующее: NB прекрасно справляется с этой задачей, хоть и чуть дольше (на практике) регулярки. И в данном случае регулярка в месте с плагином - бессмысленный балласт. Овчинка выделки не стОит!
Можно придумать десятки (если не сотни) примеров, когда код плагина будет работать быстрее необушного скрипта, и что - весь язык скриптов NB в помойку, и срочно делать плагины?
Впрочем, (как люблю повторять), каждый сам себе режиссер. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Откуда такая уверенность? - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Потому что для работы с текстом, а именно поиском по тексту, ничего лучше регулярок пока еще не придумали. Возьми любой текстовый редактор более менее популярный, и в любом редакторе будет возможность поиска с помощью регулярки.
Я уже как то говорил, даже в системе (где то случайно наткнулся, сейчас уже не помню,) целый список регулярных выражений. Что они там ищут, не разбирался, но список был приличный. Сейчас даже как то жалею что не запомнил, нужно было поразбираться с этим списком. Может быть получил бы не плохой список шаблонов на разные случаи. Не хочешь читать хелп?
Чего-чего? Стоп! Что в данном случае ты имеешь ввиду под "регуляркой"? Если упомянутый компонент, то дальнейший разговор просто бессмысленен! - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
При чем здесь компонент? Че я тебе буду разжевывать то, в чем сам мало чего понимаю.
На лучше почитай. Expressions.Cookbook И еще. Дж.Фридл - Регулярные выражения, 3-е изд.[2008]
Могу еще дать, если заинтересует.
Добавлено (12 Июля 2017, 01:09) --------------------------------------------- Выдержки из текста:
История появления термина «регулярное выражение» Термин «регулярное выражение» пришел из математики и теоретической информатики, где он отражает свойство математических выражений, называемое регулярностью. Такие выражения могут быть реализованы программно с использованием детерминированных конечных автоматов (ДКА). ДКА – это механизм с конечным числом состояний, не поддерживающий возможность возврата (backtracking). Текстовые шаблоны, использовавшиеся в самых ранних версиях инструментов grep, были регулярными выражениями в математическом смысле. Несмотря на то, что имя прижилось, современные регулярные выражения в стиле языка Perl фактически не являются регулярными выражениями в математическом смысле. Они реализованы с применением механизма недетерминированных конечных автоматов (НКА). Вы вскоре поближе познакомитесь с понятием возврата. Программистам-практикам достаточно усвоить из этого примечания следующее: высоколобым компьютерным теоретикам приходится мириться с тем, что чистые теоретические модели заменяются технологиями, более полезными в реальном мире.
При грамотном использовании регулярные выражения способны упростить задачи программирования и обработки текстов, а также обеспечить решение многих задач, которые вообще не могли бы быть решены без использования регулярных выражений. Вам могут потребоваться десятки, если не сотни, строк процедурного программного кода, что-бы извлечь все адреса электронной почты из документа, и такой код будет очень сложно написать и сопровождать. Однако с применением регулярных выражений, как показано в рецепте 4.1, решение этой задачи может быть реализовано всего лишь парой строк кода, а возможно, даже и одной строкой. Но если попытаться взвалить слишком много на единственное регулярное выражение или задействовать регулярные выражения там, где они малопригодны, вы поймете, почему некоторые говорят:
Когда кто-то, сталкиваясь с проблемой, думает: «А-а, понимаю, здесь поможет регулярное выражение», то в результате он получает две проблемы.
Вторая проблема, которую получают те, кто так думает, состоит в том, что они не читали справочное руководство, которое вы держите в руках. Продолжайте читать его. Регулярные выражения – это очень мощный инструмент. Если решаемая задача связана с обработкой или извлечением текста на компьютере, то владение регулярными выражениями поможет вам сэкономить массу времени.
Че я тебе буду разжевывать то, в чем сам мало чего понимаю.
А что же ты тогда так за них уцепился-то?
По правде говоря, я в них понимаю меньше твоего, т.к.
ЦитатаPeter ()
и не думал ни о каких "регулярках", а просто делал и все.
И ты не поверишь - все пока работает как надо.
В больших текстах, я конечно ничего не искал по причине отсутствия надобности. Может и есть во всем этом смысл, и не следует изобретать велосипед, но я понял только то, что если потребуется, то все можно своим умом сделать. По крайней мере, упомянутый компонент точно!
Цитатаmishem ()
которые вообще не могли бы быть решены без использования регулярных выражений.
Очень сомнительно! Хотя бы потому-что ведь были же сделаны регулярные выражения!
Цитатаmishem ()
Вам могут потребоваться десятки, если не сотни, строк процедурного программного кода, что-бы извлечь все адреса электронной почты из документа, и такой код будет очень сложно написать и сопровождать. Однако с применением регулярных выражений, как показано в рецепте 4.1, решение этой задачи может быть реализовано всего лишь парой строк кода, а возможно,
Можно и упомянутый код, который "трудно сопровождать" оформить так, что достаточно будет одной строчки кода. Просто все это потребует времени. Блин, автор словно не знает, что можно в том же Delphi писАть/создавать собственные классы, типы данных, и проч. На кого это рассчитано? На студентов первого курса что ли?
Цитатаmishem ()
то владение регулярными выражениями поможет вам сэкономить массу времени.
Вполне возможно! Но это вовсе не означает, что без регулярных выражений шагу не ступить.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Но это вовсе не означает, что без регулярных выражений шагу не ступить.
Тебе об этом никто и не говорит. Грубо говоря, регулярки - это свой язык программирования. Без делфи можно написать программу? Так же можно и без регулярки решить вопрос.
Тебе уже очевидное дали, вопрос Вадима. Пример с регуляркой есть, хоть ее и регуяркой сложно назвать. Тебе осталось написать код, все равно где, в делфи или НБ, который сделает то же самое. И мы сравним время поиска и длину кода.
Грубо говоря, регулярки - это свой язык программирования
Вот именно "грубо говоря"! В действительности, регулярка это просто алгоритм (точнее обработка строковых данных в нужном "направлении", и не обязательно только поиск), а заводятся данные действительно как "язык", но только язык то, пардон, скриптовый получается, топорный. Кстати, в каких-то местах (например, команда Math или SetVar) сам язык NB работает наподобие регулярки.
Цитатаmishem ()
Тебе уже очевидное дали, вопрос Вадима.
Я уже все, что думаю по этому конкретному поводу, озвучил.
Цитатаmishem ()
Пример с регуляркой есть, хоть ее и регуяркой сложно назвать. Тебе осталось написать код, все равно где, в делфи или НБ, который сделает то же самое. И мы сравним время поиска и длину кода.
Это ты об чем?
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Добавлено (12 Июля 2017, 12:49) ---------------------------------------------
ЦитатаPeter ()
Скажи, ты сильно ощутил эту разницу на практике? 280 мс это много?
У меня в скомпилированном варианте 250, регуляркой 0.
Скажи, ты сильно ощущаешь разницу когда страницы в интернет открываются мгновенно или через какое то время, с задержкой? Или выпадающие меню к примеру, или контекстное меню...
Кстати в 10, практически все с задержкой открывается. Лично меня это раздражает, а тебя? Щелкнул по значку открыть Проводник, и пошел чай наливать. Это ж здорово. А то так и будешь без отрывно у компа сидит. Нынешнее поколение программистов заботится о пользователи. Для нариков такие задержки мелочи.
Вадим, попробуй ка вот этот вариант, будет работать?
Мож ты вообще зря громоздишь свои черные списки?
Добавлено (12 Июля 2017, 21:15) --------------------------------------------- Интересно... Кликаю по панели задач. Класс окна Shell_TrayWnd. Появляется окно завершения работы виндоус.
Вадим, при таком раскладе они вообще будут бояться сделать шаг влево-вправо. Ну а без шуток, его нужно добавить к разрешенным классам.
Добавлено (12 Июля 2017, 21:24) --------------------------------------------- WorkerW еще хороший класс окна.
Рабочий стол. После его закрытия пропадут все значки с рабочего стола и перестанет работать контекстное меню на рабочем столе.
Лечится перезапуском процесса Проводник в Диспетчере задач.
Отчего же? Аккурат пришла в голову мысля сделать плагин по работе со строками, ну скажем, перебить вот это (для начала).
Совсем несложно, но, чтобы оформить все красиво (а это и есть самое хлопотное в данном случае), потребуется некоторое время. Вообще у меня не раз возникала мысль покрошить в труху самые ходовые плагины эсперальты (т.е. выпустить бесплатный аналог), но на это надо время, которого и так немного. А вот для AS3856 (если возьмется за плагинотворение) это будет прекрасной (и главное полезной для общества и здравого смысла) практикой. Все "крошить" не надо, т.к. там минимум половина просто никому не нужный хлам, но вот самое востребованное надо бы, и очень!
Цитатаmishem ()
Лично меня это раздражает, а тебя?
Гм... mishem, у меня таких проблем нет! Попробуй догадаться с трех раз "почему".
Ты сам себе накликал геморр на собственную жопу, а теперь еще и жалуешься. Чего ты хотел-то? Дальше будет только хуже! И не понимать это может только очень и очень "прогрессивный" пользователь.
А мультик понравился, спасибо! - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
В моем случае и через цикл работает. Но я не уверен, что всегда корректно. Поскольку я мониторю заголовки окон по таймеру (запускающему подпрограмму проверки по черному списку), то нежелательно, чтобы время обработки черного списка превышало интервал таймера. Подпрограмма должна успевать отрабатывать.
Скорость замерял на скомпилированном проекте.
mishem, спасибо за примеры, посмотрю!!
Добавлено (12 Июля 2017, 22:45) ---------------------------------------------
ЦитатаPeter ()
Такой код NB (строчек 5-6 не более) в написании занимает от силы полминуты, а сколько времени составление регулярки?
то нежелательно, чтобы время обработки черного списка превышало интервал таймера.
Вадим, а у тебя таймер, что - молотит чаще, чем раз в 300 мс? Круто!
К тому же, что мешает согласовать работу цикла и таймера?
ЦитатаВадим ()
С этим не поспоришь!
Как и с тем, что "специализированный" код Delphi будет во много раз быстрее этих "регулярок", вот только заметить эту разницу в твоем случае будет непросто. Необушный таймер не отличатся особой точностью (т.к. работает "через скрипты" по-любому), и потому ориентироваться на его показания надо с осторожностью. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Аккурат пришла в голову мысля сделать плагин по работе со строками
Я двумя руками за!
Ты б свое чудо в перьях до ума довел бы. Сейчас полез, а там как была команда не правильная zmGetExeNameByHandle, так и осталась уже скока лет. Все ждемс...
ЦитатаPeter ()
Попробуй догадаться с трех раз "почему".
ЦитатаPeter ()
А мультик понравился, спасибо!
Это отрывок из "Зверополис", посмотри...
Еще кусочек...
Добавлено (13 Июля 2017, 00:00) ---------------------------------------------
ЦитатаPeter ()
Как и с тем, что "специализированный" код Delphi будет во много раз быстрее этих "регулярок",
Ну как ты не хочешь понять, регулярки это сокращенная подстановка условий. Кто то уже все это написал. Зачем изобретать велосипед? Осталось просто выучить язык регулярок, и все. (если это нужно) Когда появляется необходимость, берешь и учишь.
Ведь даже в НБ с командой IfEx в некоторых случаях нужно "попотеть". А если знаешь и понимаешь, то нет никаких проблем. Все как везде.
Регулярка хороша тем, что порой нужно найти то, не знаю что, но по определенным условиям.
Я ж тебе привел пример с поиском файлов по маске.
Ты не работаешь с текстом, по этому тебе кажется что оно тебе и не надо. Я уже сталкивался, и не раз, когда меня регулярки выручали. Не хочешь читать хелп?
И да, я подозреваю что это не единственный компонент. К нему я просто направил в связи с тем что на основе него сделан плагин. Судя по прграмме RegexBuddy в котрой синтаксис настроен для разных диалектов
таких компонентов существует несколько, или же какой то основной постоянно дорабатывается.
Блин, оно в таком разд...м состоянии находится, что проще сделать отдельный плагин. Потому-то у меня руки до него и не доходят, как посмотришь, так и подумаешь "да гори оно ясным огнем!"
Цитатаmishem ()
там как была команда не правильная zmGetExeNameByHandle, так и осталась уже скока лет. Все ждемс
А чего там неправильного? Я уж нифига не помню.
Цитатаmishem ()
Осталось просто выучить язык регулярок
Вот это-то и убивает! Куда проще - отметил нужные опции (наставил "галочек") и вперед! Правда, таким способом только заранее запрограммированное и использовать. Но, mishem, поверь на слово, написать кусок "специализированного" кода не так уж и сложно, а работать он будет однозначно быстрее регулярки просто по определению.
Ругулярки нужны для пользователя, а программеру (для программирования непосредственно самой программы) они нафиг не нужны, по причине, упомянутой в предыдущем предложении.
Цитатаmishem ()
Я ж тебе привел пример с поиском файлов по маске.
Это как раз случай, когда чисто формально можно сказать "регулярка", но это "специализированный" код с четкими заранее оговоренными условиями.
Цитатаmishem ()
Ты не работаешь с текстом, по этому тебе кажется что оно тебе и не надо
Ну почему же... С большими текстами нет, просто нужды нет. Но, если мне потребуется что-то найти в каком-то тексте, то я даже и не вспомню про регулярки. Зачем? Если можно свой код нашлепать (правда, не исключено, что что-то придется и поизучать, типа "для разных диалектов", но это не принципиально). Ну, если только ради "экономии времени", по сути - единственный аргумент.
mishem, ты пойми главное - для Delphi или С++ (и им подобным языкам) нет ничего невозможного, и все упирается в две вещи - способности (опыт и знания) программера и время.
Цитатаmishem ()
Регулярка хороша тем, что порой нужно найти то, не знаю что, но по определенным условиям.
Это можно и в NB сделать, надо только соответствующим образом сформулировать условия!
Простейший пример - While Случай, когда заранее неизвестно количество срабатываний цикла, и выход из цикла происходит по наступление заранее оговоренного условия, которое формируется в самом цикле. Но из цикла можно выйти и по-другому (ключевому внешнему условию, которое будет проверяться внутри цикла). - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Команда одна, окно открывается другое, и выполняет другую команду в отличии заявленной. Но для той команды какую выполняет, параметров не хватает
А да, вспомнил - это косяк чисто технический, я там порядковые номера команд перепутал, и потому надо просто писАть их вручную. Может и дойдут у меня руки (точнее - появится желание) переделать плагин, но, mishem, ты пойми - есть куда более интересные идеи (по крайней мере, для меня).
А в этом плагине надо разгребать бардак (который я сам же и навел), а это - ужасная скукота, честное слово! Периодически я о нем вспоминаю, но... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Технически совершенно без разницы, и даже "все в одном" несколько проще будет, но вот если разгребать бардак, то проще по категориям. Но, кто же знал, что будет бардак?
Цитатаmishem ()
Может быть лучше так и поступить?
Сейчас это уже не актуально, и мне думается, что лучше привести в порядок то, что имеется. Просто все это - механическая тупая работа (в основном), т.к. сейчас у меня по сути свой SDK для плагинов (который я тоже постоянно совершенствую), а тогда все делалось "в лоб" типа как получится без какой-либо четкой системы, и вот теперь надо практически все организационно переделывать, да и сам код рабочих функций тоже придется править. Частично кое-что уже сделано, но это примерно 20-30 процентов.
Надеюсь, что найду силы для остальных 80%, но, скорее всего, это после того как хоть что-то сделаю сейчас из "текущего".
Но, самое паршивое - писАть справку! Без дураков! - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
А ты попробуй писать команду, и тут же справку к ней. Написал команду-написал раздел справки. Следующая команда - следующий раздел. В итоге справка как бы сама собой пишется. И не напрягает ни одна работа, ни другая. Не хочешь читать хелп?
Да, 100мс. Хочется, чтобы лишние окна сразу закрывались, без задержки.
Вадим, ты всерьез полагаешь, что насилуя(!) программу таким способом, окна будут быстрее закрываться? В твоем случае интервал срабатывания таймера должен быть не менее секунды, а то и двух.
Впрочем, я уже говорил, что каждый сам себе.... режиссер. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
то уже визуально не тот эффект. Тут уж дело вкуса больше, наверное.
Эффект нужен? Ну, покажи, к примеру (на пару-тройку секунд) "Аллу Борисовну". Перспектива увидеть еще раз отобьет у студента желание хитрить, если не навсегда, то на время экзамена - точно!
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться