Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Предположим, у нас есть такие "ключи" (в данном случае - просто буквы) "Д", "У", "Ш" и "А". Из них можно составить такие "комбинации" (не все): Д ДУ ДУШ ДУША.
Предположим отмечены (в чекбоксах) только три буквы Д,У,Ш ЧТО надо искать все первые три или только третью?
Кроме того, комбинация может быть (ПРЕДПОЛОЖИМ ветром надуло) такой: УШД
Учитывать ее или нет - формально все три искомых буквы присутствуют, и тоже - комбинация.
Добавлено (03 Мая 2016, 16:29) --------------------------------------------- Дополнение.. Такие комбинации: ДШ УШ У Ш
тоже искать? - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Учитывать ее или нет - формально все три искомых буквы присутствуют, и тоже - комбинация
Нет, последовательность жестко задана и ветром надуть не может
ЦитатаPeter ()
Предположим отмечены (в листбоксах) только три буквы Д,У,Ш
Как уже написала, в моем случае для задания всех нужных мне комбинаций чекбоксов мало Пожалуйста, не надо ко мне на "Вы", а то чувствую себя бабулькой)
Нет, последовательность жестко задана и ветром надуть не может
С этим разобрались... А вот:
ЦитатаCallisto ()
в моем случае для задания всех нужных мне комбинаций чекбоксов мало
И если чекбоксов мало, то тогда как их задавать? Ранее было сказано
ЦитатаCallisto ()
вся задумка представляет из себя некую фильтрацию с таким окном управления
ЦитатаCallisto ()
соответственно заданным ключам, нужно создать новый массив с удовлетворяющим условиям строкам
Как вообще определить какие ключи нужны?
У меня мозг закипает... Пойду пройдусь... сигарет заодно куплю... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Вспомнилось: "Пойди туда — не знаю куда, принеси то — не знаю что"
К примеру, как выйти из этой ситуации?
ЦитатаCallisto ()
надо найти только записи с ключом А-Х, то при нажатых чекбоксах А и Х в нынешних условиях поиск выдаст не только все записи с ключом А-Х, но и все записи с ключом А
Пожалуйста, не надо ко мне на "Вы", а то чувствую себя бабулькой)
надо найти только записи с ключом А-Х, то при нажатых чекбоксах А и Х в нынешних условиях поиск выдаст не только все записи с ключом А-Х, но и все записи с ключом А
В первом моем примере выдаются именно записи с ключами А-Х.
После поставленной этой задачи пришел к мнению что нужны записи как с ключом А, так и с ключами А-Х.
ЦитатаCallisto ()
чекбоксов мало
Тоже об этом думал. Как я понимаю могут быть как варианты найти только А-Х, так и с А и А-Х.
В принципе с регуляркой это не проблема. Попробую объяснить на примере регулярки
(?m)^\w+[A](-[X])?$
(?m) = модификатор который указывает что символы ^ и $ обозначают не начало и конец текста, а начало и конец каждой строки. Тоесть текст считается многострочным, а не однострочным.
^ = обозначает начало строки. Тоесть если текст в начале строки, он будет найден.
\w = любой один латинский символ включая знак подчеркивания _
+ = грубо говоря в совокупности \w+ это любое слово состоящее из латинских символов и знаков подчеркивания. Найдет Name_1_A Name_1_B и т.д.
Не найдет Name_1_A-X Name_1_A-X-O и т.д. так как символ -не попадает в этот диапазон.
[A] = в квадратных скобках указывается диапазон искомых символов. В данном случае (?m)^\w+[A] найдет все Name_1_A \w+ найдет Name_1_ после которого идет символ А с учетом регистра. Комбинация (?m)^\w+[AВС] найдет все Name_1_A Name_1_В Name_1_С
(-[X]) = в круглых скобках указывается группа символов состоящая из символа - и комбинации символов указанных в квадратных скобках. Будут найдены все символы -Х. Если укажем в квадратных скобках (-[XYZ]) будут найдены все -X, -Y, -Z. То есть (?m)^\w+[A](-[X]) найдет все Name_1_A-Х Nameeeeeee_2_A-Х и т.д
? = обозначает что предыдущий символ может как существовать, так и не существовать. То есть в поставленной задаче именно его существование играет роль что нам нужно будет найти. Без вопроса, найдет только Name_1_A-Х Name_2_A-Х и т.д
С вопросом найдет как Name_1_A-Х Name_2_A-Х так и Name_1_A Name_2_A
$ = обозначает конец строки. То есть после Name_1_A-Х или Name_1_A идут символы переноса строки и\или возврата каретки. #13, #10.
Для того чтобы нам создать условие искать только Name_1_A-Х, или Name_1_A-Х и Name_1_A, нужно вместо вопроса добавить переменную в которой при условии знак вопроса будет, или не будет находится.
Все нужные условия можешь знать только ты, по этому придется самой в этом разбираться и создавать в нужном месте переменные и при необходимости менять их значения.
надо найти только записи с ключом А-Х, то при нажатых чекбоксах А и Х в нынешних условиях поиск выдаст не только все записи с ключом А-Х, но и все записи с ключом А
Гм... У меня сейчас мозг взорвется! Вот это:
ЦитатаPeter ()
Предположим, у нас есть такие "ключи" (в данном случае - просто буквы) "Д", "У", "Ш" и "А". Из них можно составить такие "комбинации" (не все): Д ДУ ДУШ ДУША.
Предположим отмечены (в чекбоксах) только три буквы Д,У,Ш ЧТО надо искать все первые три или только третью?
всего двумя постами выше, я для кого писАл? Или это форма садизма такая?
Цитатаmishem ()
Все нужные условия можешь знать только ты
Вот в том-то и дело, что "условия" не определены.
Цитатаmishem ()
Ну или можешь пойти по другому пути который предлагает Петр.
Петр уже не понимает чего предлагать. У него уже сил не осталось.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Callisto, задача эта РЕШАЕМА! Надо просто знать ЧТО искать и ГДЕ искать? Если "ГДЕ искать" еще понять можно, то вот с "ЧТО искать"... Пока понять невозможно
Добавлено (03 Мая 2016, 19:12) ---------------------------------------------
Цитатаmishem ()
Пока ей нужно самой определится что именно нужно.
Поддерживаю!
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
А там архиватор когда открываешь (у меня WinRAR), справа пароль написан. Это не мой архив, просто прямую ссылку дал что бы не искать. Вообще рабочую версию порой сложно найти. Эта ссылка с китайского сайта.
Добавлено (04 Мая 2016, 22:46) --------------------------------------------- Чет я тупанул. Легче было скачать и пароль дать, чем объяснять...
В продолжении темы решения своей "похотелки" возникла одна мысля и появился вопрос все же косвенно связанный с темой. Как можно массив быстро загнать в листбокс? Пожалуйста, не надо ко мне на "Вы", а то чувствую себя бабулькой)
Ну я знаю опять только с помощью плагина hpwControl. :) Вообще как я уже говорил, при работе со строками для меня он не заменимая вещь, и я им пользуюсь практически всегда.
Код
hpwStrJoin "[Имя массива]" "Начать с номера" "Остановить на номере" "[#13] или [#13][#10], по желанию" "Переменная для сохранения" SetObjectCaption "Имя листбокса" "Переменная с сохраненным массивом"
Ну да, чего тут удивляться сентенциям о том, что NB якобы ничего не может без плагинов.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Не, ну почему же? Я сама к плагинам стараюсь прибегать в крайнем случае Но я вот не смогла изобрести именно быстрого способа заполнения Массив порядка 400 элементов Пожалуйста, не надо ко мне на "Вы", а то чувствую себя бабулькой)
Петр, ты почему то никак не хочешь понять что к некоторым плагинам прибегают уже опытные пользователи которым не хватает скорости самой НБ. В данном случае цикл НБ очень медленный, и объединение массива с помощью цикла не очень хороший вариант. Я так понимаю что ты мало работаешь со строками, по этому не можешь понять почему именно требуется плагин.
Не буду спорить что и новенькие тоже пытаются использовать плагины, но у них совсем другой повод, простота написания кода. Как можно меньше строк. И опять же не вижу в этом ничего плохого, так как к плагинам прибегают от не знания самой программы, но по мере изучения открывают для себя что то новое.
Недавно на оффоруме видел вопрос, типа подскажите плагин для отображения окна выбора папки, в котором можно указать начальную папку. И этот вопрос задавал уже опытный пользователь. Позже он сам же догадался как штатными средствами это можно сделать.
Большинство пользователей не знают многих тонкостей НБ, и норовят сразу по мере поступления вопроса использовать сторонний скрипт или плагин. В таких случаях я против плагина. Но когда в НБ не заложены вроде бы необходимые функции, к примеру то же объединение массива, то почему не использовать плагин для ускорения процесса?
Все упирается в объемы. Обработать 5-15 строк в цикле, это одно. Обработать как в данном случае 400 и больше, это другое.
Вопрос имено так и звучал, быстро! Не просто загнать в листбокс, а быстро загнать.
Я встречал как парсили текст, после через цикл добавляли построчно в листбокс. И это длилось на протяжении долгого времени, пока один из новеньких не пришел и чисто случайно не подсказал что можно добавлять сразу весь текст с помощью команды SetObjectCaption. Вроде бы мелочь, но процесс добавления ускоряет значительно.
Может быть есть способ без плагина быстро объединить массив. Если да, подскажи. В будущем буду рад делать это без плагина. Не хочешь читать хелп?
Но я вот не смогла изобрести именно быстрого способа заполнения
В NeoBook есть два разных способа заполнения (именно заполнения) объекта ListBox в зависимости от того, что представляет собой то, которое надо запихнуть в этот ListBox. Один способ практически мгновенный, второй потребует какого-то времени. Понятно, что во втором случае (на обьработке массива) плагин окажется быстрее необушного скрипта, но вот вопрос - "насколько быстрее". Если для решения какой-либо задачи скорость действительно критична и разница составляет секунды (десятки секунд), тогда применение плагина оправдано, в противном случае (если разница доли секунды и даже пара секунд), применение плагина, в лучшем случае, простая лень, в худшем - нежелание или неспособность изучать программу, уж простите за прямоту, но тут ничего личного. Необушный язык для того и существует, чтобы им пользовались, и именно к этому я всегда призывал и буду призывать необукеров!
Цитатаmishem ()
Не буду спорить что и новенькие тоже пытаются использовать плагины, но у них совсем другой повод, простота написания кода. Как можно меньше строк. И опять же не вижу в этом ничего плохого, так как к плагинам прибегают от не знания самой программы, но по мере изучения открывают для себя что то новое.
mishem, прочти этот абзац еще раз....
В том-то и дело, что "привычка - вторая натура", и если сразу приучать к плагинам, то никогда не откроют для себя что-то новое. НИКОГДА! По крайней мере, до тех пор пока их носом не ткнут. Но даже и это не дает гарантии, что они станут пользоваться средствами самой NB. Готов поспорить, что "любовь к плагинам" так и останется.
Цитатаmishem ()
Вопрос имено так и звучал, быстро! Не просто загнать в листбокс, а быстро загнать.
Выше я уже сказал по этому поводу.
Цитатаmishem ()
пока один из новеньких не пришел и чисто случайно не подсказал
А я об чем?
НАДО ИЗУЧАТЬ САМУ ПРОГРАММУ и ее возможности. NeoBook чрезвычайно проста в изучении, да и само программирование в ней скорее игра, чем тяжелый труд программиста. Если бы ты видел сколько реально надо работать(!) головой и руками в том же Delphi, то NB показалась бы детской забавой. И вместе с тем, при весьма скромных (в сравнение в нормальными языками) возможностях, NB способна воплотить в жизнь многие фантазии новичков, если они, конечно, не пытаются с одного захода сотворить "ядрену бомбу".
Цитатаmishem ()
Может быть есть способ без плагина быстро объединить массив.
Опять - ЧТО ЗНАЧИТ БЫСТРО? Ты не маленький и сам знаешь как это сделать. А скорость сам выбирай!
В конечном итоге мне лично все-равно, как каждый конкретный пользователь будет воплощать в реальность свои фантазии. Просто сначала распинаешься-распинаешься, тратишь время, а в конечном итоге оказывается, что все было впустую, и вопрошающий ВСЕГДА выберет вариант "в одну строчку" (даже если скорость будет одинаковая). И это я уже понял "железно".
Добавлено (13 Мая 2016, 00:23) --------------------------------------------- Кстати...
ЦитатаCallisto ()
Массив порядка 400 элементов
На обработку такого массива строк (по второму варианту в цикле! из файла) и заполнение ListBox NeoBook потребовалось около 1,3 сек, и все это под отладчиком. Это много?
В скомпилированном виде в среднем 0,6 сек. Опять много? С плагином "на-все-про-все" уйдет 0,4 секунды. пусть даже 0,2 сек, это критично? Программа рухнет? А мож вся система?
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Просто в списке пунктов объекта ListBox укажи переменную [SpisokPunctov]. Твой код с отладчиком у меня обработался для файла в 322 строки за ~2 сек. Мой вариант, так же с отладчиком для того же файла занял миллисекунды. Чисто субъективно заполнение прошло вообще мгновенно. "Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"
Во-первых (и пожалуй самое главное), я блондинка Во-вторых, сама туплю, изначально речь шла про заполнение листбокса элементами массива, т.ч. для чего привела сей код, теперь и для меня загадка А в-третьих, уже сама запуталась, бросаюсь от одного варианта к другому, от него к третьему и везде все что-то не так Пожалуйста, не надо ко мне на "Вы", а то чувствую себя бабулькой)
Сообщение отредактировано Callisto - Пт, 13 Мая 2016, 18:02
В том-то и дело, что "привычка - вторая натура", и если сразу приучать к плагинам, то никогда не откроют для себя что-то новое. НИКОГДА!
Именно плагины открывают что то новое. Новые возможности. Новые взгляды на программу. Лично меня плагины напрягают только в нужде таскать с собой лишний багаж. С выходом новых систем после ХР напрягает еще то, что где то плагину система может просто не позволить выполнить действия. В остальном, не вижу ничего предосудительного.
Тому кто использует программу только разово, сделал и забыл, вообще без разницы как это все работает, главное что б работало. Тому кто заинтересован в программе, будет постоянно искать новые и новые решения, и постоянно открывать для себя что то новое.
ЦитатаCallisto ()
У меня такой цикл занимает ~15 секунд
сверни отладчик, вверху справа зеленая стрелка, займет на много меньше. Плюс не надо в цикле добавлять пункты в листбокс
Код
ListBoxAddItem "ListBox1" "0" "[s]"
добавление и перерисовка объекта занимает много времени.
Лучше добавить в переменную список элементов и после одним махом вставлять в листбокс.
Добавлено (13 Мая 2016, 18:14) --------------------------------------------- Кстати еще по плагинам... Как ты и сам знаешь, плагины это обычные библиотеки dll. Если есть библиотека с готовыми функциями, какой смысл изобретать велосипед? Даже в системе не спроста придумали библиотеки которые используют большинство программистов, а не пишут свой код только ради того что "я сам написал", и это круто. Лично я считаю что глупо писать какую то готовую функцию годами "отшлифованную" только ради того чтобы убедить самого себя (и только) что ты на что то способен.
В NeoBook есть два разных способа заполнения (именно заполнения) объекта ListBox в зависимости от того, что представляет собой то, которое надо запихнуть в этот ListBox. Один способ практически мгновенный, второй потребует какого-то времени.
Callisto, ты пошла по второму варианту, причем, самым "тяжелым и медленным" способом, т.к. каждый раз после добавления пункта в ListBox он перерисовывается, а это требует времени и немалого. Самый эффективный и быстрый способ - назначить (в качестве СПИСКА пунктов) объекту ListBox переменную (например. list), и загнать в эту переменную целиком массив. Таким способом можно загнать в ListBox сразу весь текстовый файл, разделенный на строки, и каждая строка станет отдельным пунктом списка. Но, это примем работает только если "строки" (элементы массива) разделены символом [номер13]. И вот тут начинается самое интересное... Имея какой-либо массив, нужно из его элементов сформировать СТРОКУ, отделив элементы символом [номер13], а дальше присвоить эту строку переменной списка пунктов объекта ListBox, т.е. list. ВСЕ! Скорость формирования (в цикле) из пунктов массива этой строки будет намного больше скорости прямого добавления пунктов, плюс не потребуется время на перерисовку объекта. Именно этот вариант я и "проработал" Если же есть просто строка с другими разделителями (как массив), то достаточно поменять разделители одной командой NB.. Чуть позже нацарапую дэмку. Но, думаю, все это бесполезно, и в работу все-равно пойдет плагин.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Думаю моя основная проблема в том, что я изначальные данные пытаюсь подогнать под новые условия, так сказать под "похотелку". Наверно надо все переделывать под новые реалии Пожалуйста, не надо ко мне на "Вы", а то чувствую себя бабулькой)
Сообщение отредактировано Callisto - Пт, 13 Мая 2016, 18:35
Именно плагины открывают что то новое. Новые возможности.
Именно - НОВЫЕ ВОЗМОЖНОСТИ! А какой смысл от этого "нового", когда не познано "старое"? Плагины должны ДОПОЛНЯТЬ возможности NeoBook, а НЕ ПОДМЕНЯТЬ их. И если пользователь будет ориентироваться только на плагины, то никогда ничего путнего у него не выйдет, т.к. плагины, сами по себе (в отрыве от главной программы), ничего не значат, и только " в союзе" со скриптами NB от них будет толк. В первую очередь нужно знать программу и ее собственные возможности (и чем лучше, тем лучше, каламбур, сорри... ), а плагины дело второстепенное! Иначе, "чуть что" - ПОМОГИТЕ НАЙТИ ПЛАГИН!!!!" Что, собственно, уже и наблюдается. А идея хоть чуток "шевельнуть мозгом" так и не придет.
Цитатаmishem ()
Даже в системе не спроста придумали библиотеки которые используют большинство программистов, а не пишут свой код только ради того что "я сам написал", и это круто.
Да, такое имеется и виндовские библиотеки используются на всю катушку, но.... Они уже есть в винде, и именно "изобретать велосипед" глупо. И то все это только для виндовских библиотек, а их не так уж и много используется. Например, если есть желание "защитить" свою программу от взлома, то никогда не используй WinAPI.
Цитатаmishem ()
только ради того чтобы убедить самого себя (и только) что ты на что то способен.
Главное не себя убедить, а НАУЧИТЬСЯ чему-то!
Добавлено (13 Мая 2016, 19:42) ---------------------------------------------
ЦитатаCallisto ()
Думаю моя основная проблема в том, что я изначальные данные пытаюсь подогнать под новые условия,
Надо просто больше изучать программу, не бояться и не стесняться. Все приходит с опытом и временем.
Лет 15 назад читал (где именно точно не вспомню сейчас, но в какой-то книге), что когда мелкософт работала на Office2000, то решила провести опрос среди пользователей Office97 в духе "что бы вы хотели увидеть в новой версии?". Результат был сногосшибательным - оказалось, что примерно 90% из того, что пользователи хотели бы увидеть в новой версии, уже имелось в предыдущей, просто они этого не знали.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться