|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.05.2015, 13:38 | #21 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
VB Script
Такс... Продолжаю.
Есть еще такая вот штука как выполнение скриптов. Помню тут на форуме была тема о том как взаимодействовать с другой системой на каком уровне. Многие говорили что вот мол не надо мешать языки, это пагубно и все такое. Не вижу в этом вообще ничего такого отвратного. Гибридная программа наоборот как показывает моя практика дает хорошие плоды, если ОС поддерживает конечно. Поэтому я вообще без зазрения совести прикрутил к ЯВУ работу на VBS. Команды и код передаются в виде текста (строки), описанной свободно в ковычках прямо в тексте программы. Причем Алиса настроена изначально таким образом, что перенос строки не прерывает описанную команду. Вот знаю что в Питоне и PHP тоже есть операторы типа ''' (уже не помню как точно), которые указывают что ниже текст мультистроковый. Очень удобная штука, лично я терпеть не люблю когда компиляторы Си или Паскаля говорят мол строка не закрыта. Вот. Наверное поэтому у многих программистов сложился такой стереотип неделимости строки и невозможности описать многострочный текст в коде, а соответственно невозможности описать программу на другом языке в ЯВУ. Ну нет. Это из области мифов. Можно. И нужно. Итак, класс: Код:
Тело скрипта ассигнируется методом addcode. В виде строки в него передается скрипт.: Код:
Если в скрипте обнаружена ошибка vbs.error вернет ее текст, иначе пустую строку. Т.е. синтаксические ошибки можно обработать. Далее остается только вызвать функции: Код:
Как вариант еще можно просто вызвать расчет выражения. Код:
Опять таки эта фичка позволила мне решить достаточно много задач, которые были уже оформлены на VBS, но не собраны в единый проект. Разбежались программисты их создававшие или спились. Так что я их поконсолидировал в код Алисы и отдал юзерам. Говорят что работает как надо. В общем тут срабатывает тот же принцип что и в выше описанных FoxPro и ADO. Код передается в качестве открытого текста, и скармливается ядру или провайдеру. И те, кто критикуют такие гибридные ПО, уверен на 100% сами никогда от шаблонных традиций не отходили просто потому что кишка тонка. А зря. Прогресс этого не любит. Где это у меня применяется? Есть некий сервер FTP, который расставлен клиентам (его пример я кстати тоже выкладывал на форум). Так вот Алиса прикручена и к нему, с такой целью, чтоб удаленно выполнять мои комманды и программы. Что-то вроде телнета. Например есть такой код: Код:
Сей (а точнее подобный) код я передаю серверу с командой "выполнить". Алиса его добавляет в объект vscript, выполняет и возвращает результат. И все. Задача решена. И так же выполняю удаленно и другие скриптовые коды для, скажем, бэкапирования баз и файлов. Чистки мусора. Формирования документов на удаленных хостах... Да много чего. Удаленное управление требует подчас таких выкрутасов, которые можно решить только написав программу и выполнив ее. А чтоб не тормошить и прерывать работу юзеров я делаю это в фоне вот такими вот сплойтами, что ли... Оч. часто, если скрипт однотипный для все хостов, просто рассылаю код всем дабы выполнение началось одновременно везде, чтоб я не ждал пока тот или инной хост обработается по очереди. Это экономит время, а программа делает за меня те или инные действия, как будто я залез по удаленке и сам в консоли начал исполнять комманды. Экономлю себе же время короче говоря. То же самое с Фокспро. На удаленках есть некие справочники, которые нужно обновлять или чистить. Посылаю в виде скрипта код на фоксе, который интерпретатор исполняет. Данные таким образом держу актуальными всегда.
I'm learning to live...
|
02.05.2015, 13:58 | #22 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,774
|
Это не работа с БД, а разработка БД -- своей, объектно-ориентированной. Код на Канторе всегда является описанием некого ОО-пространства. Это расширенный аналог AST, нужный для реализации ОО-системы, а для реализации обязательно нужна обратимость кода.
|
02.05.2015, 13:59 | #23 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
WMI. Администрирование хоста
WMI использую уже давно, в рамки интерпретатора тоже влепил в числе первых компонентов.
Собственно сам алгоритм описан тут: http://www.programmersclub.ru/wmi-w%...0%B9-%D1%87-1/ http://www.programmersclub.ru/wmi-w%...D1%82%D1%8C-2/ Все это упаковал в интерпретатор, чтоб было поудобнее. Класс: Код:
Делается это примерно так: Код:
В метод Open параметром sql передается сам WQL запрос. Результат открытия False или True, чтоб проверить на ошибки при открытии. Если запрос открыт, метод scan инициирует проход по полученной плоской табличке с запрошенными данными, при этом итератор переменной этого класса получает в виде массива значения каждой проходимой строки. Т.е. достаточно вызвать <переменка>[Имя поля] чтоб получить значение из набора из этого поля из текущей на итерации записи. Собственно это единственное, что я использую из этого класса, т.е. являюсь наблюдателем за параметрами системы. Мало ли нужно узнать характеристики компа. С классом wmi это не проблема. И в реестре рыться не надо лишний раз. Список принетров, процессов, драйверов, параметры процесора... Короче говоря: https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx Минус пожалуй в том что далеко не все возможности WMI могу использовать, но такого требования не было. Имеется ввиду не все классы в запросе. Однако для ревизий системы этого хватает. Теоретически помимо запросов есть еще "возможность" редактирования параметров классов. Описывается она так: Код:
Да. Надо оговориться, что увы этот метод редактирования не оправдал надежды. Редактировать то редактирует, но никакого влияния на операционку это не оказывает. Как будто редактирование происходит в профиле пользователя, а не в контейнере системы. Увы, не смог я разобраться почему так происходит. Если кому интересно есть обсуждение на форуме по этому поводу: http://www.programmersforum.ru/showthread.php?t=274202 Так что редактирование произвожу через VBScript. На сим по WMI все.
I'm learning to live...
|
02.05.2015, 14:00 | #24 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
02.05.2015, 14:14 | #25 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Реестр. INI файлы
Работа с реестром тоже имеется.
Класс: Код:
Для открытия ветки реестра есть метод Open Код:
Результат True или False для проверок в IF Как обычно метод error возвращает текст ошибки. Проход по элементам открытой ветки - все тот же scan Код:
Метод сканирования может получить селектор в виде имени секции, которая указывает в какой подветке из открытой ветки сделать проход: Код:
Запись в реестр осуществляется методом write Код:
Если такого элемента нет - он создастся. Ошибку записи можно будет обработать, получив текст методом error, если write вернет False. Если классу указать ИНИ файл, то работать он будет с ним а не с реестром: Код:
Код:
I'm learning to live...
Последний раз редактировалось Stilet; 02.05.2015 в 14:16. |
02.05.2015, 14:22 | #26 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Регулярные выражения.
Для регулярок есть свой класс:
Код:
Первый это проверка на совпадение: Код:
True - если выражение подходит, False в противном случае. Используется опять таки в IF или циклах. Второй это замена: Код:
I'm learning to live...
|
02.05.2015, 14:34 | #27 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,774
|
Это не единственный синтаксис в Канторе, в нем будет несколько альтернативных возможностей записать одно и то же.
Раз уж так вышло, что для ОО-основы в обязательном порядке нужна обратимость кода, я решил оттянуться по полной и не ограничиваться одним синтаксисом. В Канторе (тогда еще Оно) с первого дня их разрабатывалось как минимум два, плюс еще кириллица в уме. Символ Кантора -- стилизованная фрактальная снежинка-шестеренка: Не знаком с Cache, и классификация "иерархическая" меня напрягает. Это же древний какой-то подход к БД, дореляционный? В Канторе из-за множественного наследования линия наследования -- граф. Он тоже считается за иерархию? |
02.05.2015, 15:38 | #28 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
I'm learning to live...
|
||
02.05.2015, 16:56 | #29 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Stream. Поток данных.
Класс для работы с потоком:
Код:
Код:
для открытия файла так же может применяться отдельно метод open. Собственно делает то же самое что и указание file в качестве типа. Особо его не использую. Для сохранения потока в файл использую метод save: Код:
Переход по потоку производит метод Pos: Код:
Считывание может производится несколькими способами. Поток считается массивом, поэтому считку можно производить как с обычного массива. При этом есть возможность указать тип считываемого и перекодировку в систему счисления. Пример: Код:
Код:
len - длина считываемого блока. Тип считываемого следующий:
Запись: Код:
Код:
Код:
Код:
Код:
Надо будет сделать так, чтоб можно было в одной функции несколько параметров обрабатывать (запомню в ремарке) Ну или по простому: Код:
Тыкс... Проход по потоку. Scan. Живой пример кстати: Код:
res = результирующая строка с хешем. i - просто счетчик. Переменная класса получает статус итератора, и возвращает байт. Может быть как-нибудь потом допилю селекцию что в итератор при проходе выбирать, байт, слово, строку... Пока не делал. Вездесущий Scan практически везде где есть необходимость прохода полностью заменяет цикл. Практически стал стандартом языка уже. Нда... Очистка потока: Код:
Метод error тоже присутствует, и возвращает сообщения при ошибках. Тоже такой вездесущий получился.
I'm learning to live...
|
02.05.2015, 17:27 | #30 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Visual Alisa. GUI.
Скромная такая попытка сделать интерфейс пользователя. Так то сам интерпретатор по умолчанию - консоль. Ну вот и решил разнообразить себе "зызнь". В общем запилил основы для визуальных компонент. Интерпретатор для такого кода нужно запускать с параметром gui в командной строке.
Вот знаю что в Питоне тоже есть такая возможность - графически накидать на форму чего-то. Ну и правильно сделали. PHP вроде как курит в сторонке, хотя может и есть какая нить Visual PHP. Вон Эмбаркадеро вроде пыталось такое разработать, чем кончилось не помню, но не похоже чтоб разработка покорила сердца масс. Да... По умолчанию его консоль является главной формой, и для нее есть класс mainform, собственно этой формой управляющий. Консоль чтоб не мешала можно отключить, тогда получим голую форму. Компонентов на данный момент, которыми можно оперировать мало, но главное что есть база для увеличения их численности. Сразу покажу код чтоб пояснять по нему как все это выглядит Код:
Для формы можно установить координаты (параметры x и y), размер (h и w как высота и ширина), выравнивание (align), наподобие делфийского, заголовок (caption). Флаг "nolog" убирает консоль из формы. внутрь формы помещаются компоненты, описываемые параметрами. Имя параметра представляет собой класс компонента, а значение уже характеризует сам компонент. Так в примере Код:
Я особо не буду вдаваться в описания, думаю что в примере слова, подобранные в качестве имен свойств достаточно рассказывают для чего они нужны. Функция alert - обычный MessageBox. GUIшка, повторюсь, не дописана до полного, так сказать, хаоса. поэтому применения ей пока серьезного нет. Но в планах. Даже есть идеи - написать IDE для Алисы на ней же. Ну будет время, посмотрим. Не думаю что будет много препятствий. По поводу работы с формой и ее компонентами тоже пожалуй не стану много писать. Думаю в примере наглядно видно, в каком направлении я вижу эту разработку.
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хочу написать программу для себя | Marishka.S | Помощь студентам | 7 | 02.10.2011 17:23 |