Библиотека функций
|
|
Rush | Дата: Суббота, 03 Ноября 2007, 18:53 | Сообщение # 1 |
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
| Посмотрев плагин Алекса, содержащий матфункции, я пришел к выводу: "Вот оно! Это именно то, что нужно". Вывод, конечно, относился не конкретно к этому плагину, а к самой сути его. Ведь по сути это не плагин, а библиотека функций. От плагина здесь только принцип связи с приложением. Собственно, если подумать, существует реальная возможность при помощи подобной (или нескольких) библиотеки развить возможности ММВ до классного скриптового языка. Все это, естественно, не ново и наши писатели плагинов делали подобные вещи неоднократно. Главная моя мысль состоит в том, чтобы свести наработки воедино и унифицировать. Нужно создать именно единую библиотеку (или же несколько тематических) с единым синтаксисом передачи параметров в функцию и возвращаемого значения. Причем, поле для творчества открывается большое и, лучше всего, коллективного. Создать шаблонную DLL и постепенно заполнять ее - в заполнении могли бы поучаствовать совместно все, кто умеет. Большая потребность существует, например, в функциях по работе с файловой системой. Да и тех же функций обработки текста, при том, что это одни из наиболее разработанных внутренних функций ММВ, явно маловато. Да и много-много чего еще бы неплохо иметь. Можно очень многие internal-функции того же Делфи применить к ММВ, а еще есть API, FSO, созданные самим программером и т. д. Вот такие мысли вслух...
|
|
| |
as-master | Дата: Суббота, 03 Ноября 2007, 19:31 | Сообщение # 2 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Вот это да! Несмотря на то, что я ничего не понимаю в программировании, суть твоего предложения я понял прекрасно. Эх, жаль, что не могу участвовать в этом!!! Но одно могу сказать сразу: если мы сделаем это, то по ММВ - мы впереди планеты всей! А перед Романом Воской я лично буду ходатайствовать о присуждении тебе медали Заслуженного ветерана ММВ! Это, конечно же, шутка, но вот то, что из ММВ можно будет сделать значительно более полноценный продукт - это не только впечатляет, но и дает огромные надежды. Ты совершенно справедливо заметил, что не хватает именно: 1. Функций для работы с файловой системой (какраз сейчас мучаюсь с определением размера каталога) 2. Более продвинутых функций для работы с текстом (строками). (Например, нельзя в одну строку написать код, чтобы выдернуть текст из файла, скажем, из i-ой строки, с символа n по m). 3. Ну и, конечно, всё тех же математических функций. Исходя из этого можно и разрабатывать три отдельные библиотеки.
Да пребудет с вами ММВ!
|
|
| |
Rush | Дата: Суббота, 03 Ноября 2007, 19:43 | Сообщение # 3 |
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
| Quote (as-master) Эх, жаль, что не могу участвовать в этом!!! Да и мне тяжело участвовать. На Делфи-то я не пишу. Мы можем только помогать оч-ч-чень ценными советами и предложениями. :))
|
|
| |
toizy | Дата: Суббота, 03 Ноября 2007, 19:56 | Сообщение # 4 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Что касается файловой системы, то я Андрею отослал плагин. Там есть даже сжатие файлов средствами NTFS. Может, он подойдёт? А касательно идеи - я почему-то подумал, что речь идёт о создании специального, так сказать, расширения скриптового языка ММВ. Такой скриптовый процессор, типа. Ну а если речь о сборнике всех функций (всех!), то тоже неплохо, однако подумайте, сколько будет весом такая библиотека...
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
Rush | Дата: Суббота, 03 Ноября 2007, 19:58 | Сообщение # 5 |
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
| Quote (as-master) Например, нельзя в одну строку написать код, чтобы выдернуть текст из файла, скажем, из i-ой строки, с символа n по m Ну, в одну строку, конечно, нельзя, но и много для этого не надо. Code crlf$=CHR(13)+CHR(10) txt$=StrFromFile(filename$,1,-1)+crlf$ ** нужная строка (например, 11-я) line$=GetArrayItem(txt$,crlf$,11) ** нужная позиция(например, с 4 по 10) str$=StrCopy(line$,5,7)
|
|
| |
toizy | Дата: Суббота, 03 Ноября 2007, 20:00 | Сообщение # 6 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (Rush) Ну, в одну строку, конечно, нельзя Так и в Делфи том же это будет не в одну строку
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
YURIY | Дата: Суббота, 03 Ноября 2007, 20:02 | Сообщение # 7 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Rush, по сути дела, ты хочешь заняться коллективным написанием плагинов с открытым исходным кодом? То есть, сделать что-то наподобие SmallPlugin от Гилмора - многофункциональную и небольшую по размерам полезную штуку. Так?
Вечная память Андрею Сергееву!
|
|
| |
Rush | Дата: Суббота, 03 Ноября 2007, 20:12 | Сообщение # 8 |
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
| Quote (toizy) А касательно идеи - я почему-то подумал, что речь идёт о создании специального, так сказать, расширения скриптового языка ММВ. Именно... Нужно просто все это коллективно обдумать. И понять - нужно ли и можно ли...Добавлено (03 Ноября 2007, 20:12) ---------------------------------------------
Quote (Yuriy) Rush, по сути дела, ты хочешь заняться коллективным написанием плагинов с открытым исходным кодом? Не совсем. Хочется именно расширения языка ММВ. А плагины - это как средство передачи данных. Если Дима реализует когда-нибудь свою идею с передачей данных через сендмессаже или по другому, сам принцип плагина не понадобится. Договоримся о терминах - по-моему, плагин - это программа, манипулирующая с родительским приложением. А здесь нечто другое.
|
|
| |
as-master | Дата: Суббота, 03 Ноября 2007, 20:22 | Сообщение # 9 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (Rush) Ну, в одну строку, конечно, нельзя, но и много для этого не надо Это-то понятно, в четыре строчки я написать могу. Но когда надо обработать много строк (например, в ini-файле), код становится длинноват. Quote (Rush) Нужно просто все это коллективно обдумать. И понять - нужно ли и можно ли... Понимать, нужно ли это, не надо! Конечно - нужно. А вот можно ли - это уж ваше дело, программеры. Вся надежда на двух людей из нашего сообщества - Диму и Алекса. Надеюсь, второй тоже появится здесь в скором времени и примет участие в обсуждении темы.
Да пребудет с вами ММВ!
|
|
| |
Rush | Дата: Суббота, 03 Ноября 2007, 20:26 | Сообщение # 10 |
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
| Quote (toizy) Ну а если речь о сборнике всех функций (всех!), то тоже неплохо, однако подумайте, сколько будет весом такая библиотека... Ну всех - это ты хватил. Нужных. Вот ключевое слово. А вес будет не настолько большим, если раскидать по тематическим библиотекам.
|
|
| |
as-master | Дата: Суббота, 03 Ноября 2007, 20:30 | Сообщение # 11 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| ...а заодно сделайте что-нибудь и на основе библиотеки BASS, чтобы компенсировать нанесенный нам разработчиками моральный вред отказом от поддержки мр3
Да пребудет с вами ММВ!
|
|
| |
toizy | Дата: Суббота, 03 Ноября 2007, 21:14 | Сообщение # 12 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (Rush) Если Дима реализует когда-нибудь свою идею с передачей данных через сендмессаже или по другому, сам принцип плагина не понадобится Ну если бы я знал, что именно нужно реализовать... Сама идея, так сказать. Что ты хочешь?
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
Rush | Дата: Суббота, 03 Ноября 2007, 21:24 | Сообщение # 13 |
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
| Quote (toizy) Ну если бы я знал, что именно нужно реализовать... Сама идея, так сказать. Что ты хочешь? Идея-то твоя была. Про то, как мне с моим васиком можно было бы через твою dll работать напрямую с ММВ. Но это я так, к слову. И через посредство плагинов нормально обмен данными идет. Не стоит тут выдумывать колеса... А, вообще, это я просто в мягкой форме напомнил наш старый разговор об интеграции VB.
|
|
| |
toizy | Дата: Суббота, 03 Ноября 2007, 22:21 | Сообщение # 14 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (Rush) можно было бы через твою dll работать напрямую с ММВ А... Я что-то копался, но забросил. Надо повторить. Напомни-ка мне через недельку
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
Alex3A | Дата: Понедельник, 05 Ноября 2007, 21:13 | Сообщение # 15 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote Ведь по сути это не плагин, а библиотека функций. От плагина здесь только принцип связи с приложением Это все плагины, только плагины бывают визуальные и не визуальные. В принципе, любая dll это тоже плагин:). Наборы фукнций, или наборы визуальных объектов, реализующие какие либо алгоритмы. Суть не в этом, а именно в принципах передачи данных. На форме ммв проекта можно куролесить как угодно, но он об этом знать не будет, для передачи данных существует весьма узкий шлюз- RUN, GET, SET. Ввести и вывести строку и целое число(если передавать дробное, все равно будет передано как целое), запустить функцию, итого мы имеем возможность оперировать всего с двумя переменными. При необходимости передачи большего количества параметров, приходится ухищряться, или передавать их последовательно(через одну и ту же переменную) или компоновать их в строковом виде, с последующей дешифрацией значений. Что поделать, такой узкий механизм, оставили для плагина разработчики ммв. Quote работать напрямую с ММВ Кроме стандартного механизма, я откопал возможность генерировать для ммв событие, что бы проект мог отреагировать на запрос плагина. (активировать скрипт, находящийся в свойствах плагина) О посыках сообщений (message), для передачи данных, не может быть и речи, и вот почему: единственный объект способный их принять - это форма проекта. При отсылке сообщения пересылаются и данные, но что она с ними будет делать? Вы ведь не всунете туда обработчик, связанный со сценарием. Все дело в том, что ммб функционирует следующим образом: имееются плеер (интерпритатор команд) и блок данных, содержащий ммв программу, в своем формате, которую плеер выполняет. Никакого "машинного кода" странслированный проект не содержит(не путать, код плеера с кодом сценария), он появляется в процессе интерпритации текста сценария плеером, при его работе. Для кого это интересно, поинтерисуйтесь, что такое транслятор и интерпритатор. Теоритически, имеется возможность что то менять в проекте, при получении совместного доступа плагином к области памяти плеера, но это мало вероятно, ибо структура памяти может быть динамической. Так что кардинально решить проблему могут только разработчики ммв. Несмотря на скудный обмен, плагин в ммв проекте это панацея во многих случаях. Он позволяет проводить, для проекта, сложные работы, при этом не занимая возможностей, времени и ресурсов проекта. Это как будто вы запустили две независимых программы, да и скорость их выполнения будет гораздо выше. Так что все время и ресурсо емкие процедуры лучше производить средствами плагина. (базы данных asmastera бдут просто летать) Средствами плагина возможно эффективно решать любую, не протоворечащую логике, задачу. По этому, имеет смысл создание тематических плагинов, расширяющиих возможности ммв.
|
|
| |
as-master | Дата: Вторник, 06 Ноября 2007, 20:07 | Сообщение # 16 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (Alex3A) (базы данных asmastera бдут просто летать) А вот с этого места поподробней, пожалуйста И имеет ли к этому отношение плагин, который ты выложил здесь.
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Вторник, 06 Ноября 2007, 22:46 | Сообщение # 17 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Именно так, и поиск организуем, и всякие извращения, билдер, гад, по таймеру пашет, чем занимается остальное время непонятно. У меня очень "быстрый" камень 700, так что то что у тебя летает, у меня и шевелиться не будет. Оч хорошо для тестирования всяких премудростей.
|
|
| |
toizy | Дата: Среда, 07 Ноября 2007, 10:48 | Сообщение # 18 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (Alex3A) но он об этом знать не будет Смотри новый сдк для новой ммв - там добавили. Quote (Alex3A) О посыках сообщений (message), для передачи данных, не может быть и речи Так речь не о том, чтобы посылать сообщения окну ММВ, мы с Рашем ещё умом не поехали. Мы собрались пересылать сообщения друг другу. Смысл в том, чтобы сделать переходник для модулей Раша, передавая сообщения и данные с ними.
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
Alex3A | Дата: Среда, 07 Ноября 2007, 14:19 | Сообщение # 19 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote сообщения друг другу С этим нет проблем, у меня давно отработана технология, несколько вариантов, сообщения, файл в памяти.. В планах группа плагинов работающих между собой без услуг ммв. А по поволу сообщений для окна, наверное в принципе возможно по сообщению, влепить число в едит, но зачем? Вполне хватит событий от плагина. (двусторонний обмен). Ты спроси у Раша, может ли он делать в obj, тогда по includes, можешь компоновать его функции. Quote Смотри новый сдк для новой ммв - там добавили Что совсем новый? И ли ты о генерации событий путем емуляции плагином нажатия кнопок? если да, то это уже давно имелось. если нет, кинь линьку, посмотрю, мож у меня его нету.Добавлено (07 Ноября 2007, 14:19) ---------------------------------------------
Quote плагин - это программа, манипулирующая с родительским приложением Плагин, вовсе не манипулирует с родительским приложением (в большинстве случаев), а является блоком расширяющим его возможности, если тебя смущают визуальные плагины, то они просто рисуют свои изображения на окне проекта, с таким же успехом можно рисовать и за его пределами. Все события и телодвижения происходящие в пределах окна плагина, обрабатываются только самим плагином, и не имеют никакого отношения к процессу проекта, за исключением процесса обмена данными Pluginset, get, run. Поэтому Quote Хочется именно расширения языка ММВ это именно то что хочется, только с весьма скудными возможностями обмена. В принципе можно немного инкапсулировать, работу с плагином, написать некий скрипт, работающий непосредственно с плагином. В связи с тем что конструкция языка скриптов имеет лишь глобальные переменные, и использует процедуры, без передачи параметров (скрипты), то мы делаем соответствующую конструкцию. К примеру аналог такой функции: function get_string(index:integer):string; В ммв будет такой: ------------------------------ numer=5 namefunction$='get_string' RunScript("pluginscript") DisplayValue("Text","returnvalue$") ------------------------------- И скипт, инкапсулирующий обращения к плагину: pluginscript: --------------------- PluginSet("PlugIn","numer") - передаем в плагин входные данные PluginRun("PlugIn","namefunction$") - выполняем функцию PluginGet("PlugIn","returnvalue$") - получаем результат ---------------------- Аналогично оформляются и процедуры. Обращения к ресурсам плагина может иметь несколько вариантов конструций (типов), сколько, сечас не помню, но у меня на сайте они описаны. Все функции, данного типа будут обслуживаться этим, одним, скриптом. В итоге мы получаем, для пользователя, расширения языка ммв, ему необходимо лишь воспринять новый вариант синтаксиса: устанавливаем входные переменные, указываем имя функции, выполняем скрипт, считываем результат. Про то, как мне с моим васиком можно было бы Васиком и асмом я занимался на заре компьютерной эры, до dll не дошел, в чем проблема, разьясните, если не делает dll, то можно слепить оболочку, правда универсальной не получится, а может и да, надо подумать. Создать некий шаблон, где все функции имеют стадартные имена и форматы вызовов.
|
|
| |
toizy | Дата: Среда, 07 Ноября 2007, 15:53 | Сообщение # 20 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (Alex3A) С этим нет проблем, у меня давно отработана технология, несколько вариантов, сообщения, файл в памяти.. Поделишься? Quote (Alex3A) спроси у Раша, может ли он делать в obj, тогда по includes, можешь компоновать его функции Не, нужно не это. Идея - сделать плагин-переходник, с которым непосредственно будет работать ММВ, а уже этот плагин будет посылать сообщения всем, модуль Раша должен их ловить и обрабатывать, а затем посылать другие сообщения, типа всё оки, возьми данные. Плагин забирает и передаёт ММВ. Это костыли, чтобы избежать использования буфера обмена. Quote (Alex3A) если нет, кинь линьку, посмотрю, мож у меня его нету. Вот именно, что новый, для 4,9,8. Есть в архиве бета-версии.
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
Alex3A | Дата: Среда, 07 Ноября 2007, 16:19 | Сообщение # 21 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Некоторые мысли в помощь. К сожалению, пока подключится к теме не могу, все время в разъездах. Но буду, по возможности чего нибудь подкидывать. Для передачи данных посредством сообщений необходимо знать хендл куда их посылать, значит должны быть окна, и там и там, возможно скрытые. По надписи окна и класу его можна найти, с помощью апи. Есть два параметра, передаваемых при посылке сообщения, L и H, то есть два числа, одно можно использовать для выбора функции а второе для данных, или можно, для каждой функции использовать свое сообщение. А как быть с передачей строк? Тут более приемлим файл в памяти, с его помощью возможно передавать кучу параметров. А можно использовать и то и другое. Поддерживает ли васик файлы в памяти, наверное, если есть поддержка апи? Суть в чем? Когда одна программа создает файл в памяти (он мало чем отличается от файла на диске, да и скорость работы с ним намного выше), другая может его прочитать, поставим ему флаги обеспечивающие совместное использование, или одному чтение, а другому запись, и так далее.
|
|
| |
toizy | Дата: Среда, 07 Ноября 2007, 16:35 | Сообщение # 22 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (Alex3A) Для передачи данных посредством сообщений необходимо знать хендл куда их посылать, Мысль была несколько иная - посылать Broadcast message... Quote (Alex3A) А как быть с передачей строк Вот с этим проблема небольшая была, помнится Quote (Alex3A) Тут более приемлим файл в памяти, с его помощью возможно передавать кучу параметров А это, кстати, идея! Раш, а как у тебя с отображаемыми в память файлами?
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
Alex3A | Дата: Среда, 07 Ноября 2007, 19:53 | Сообщение # 23 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote Мысль была несколько иная - посылать Broadcast message... И хукесы использовать? Quote А это, кстати, идея! У него должно быть все нормально, АПИ , на сколько я помню поддерживается. Надо только согласовать шаблон мап файла. У меня уже есть плагины с мап файлом, правда пмсал года три назад на вецеле, но и на коле много прог наделал, использующих мап.
|
|
| |
toizy | Дата: Среда, 07 Ноября 2007, 22:31 | Сообщение # 24 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (Alex3A) Надо только согласовать шаблон мап файла Вот это будет оптимальный вариант! Раш, ты где?
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
Alex3A | Дата: Среда, 07 Ноября 2007, 23:22 | Сообщение # 25 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Предлагаю к обсуждению вариант шаблона мара. По мере созревания иных идей о стандартах, выложу дополнительные соображения.
|
|
| |