|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.05.2015, 10:51 | #1 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Free Alisa. ЯВУ, которое я разрабатываю для себя
По просьбам нескольких форумчан выкладываю сюда свой интерпретатор Называется "Alisa" и немного примеров. Поскольку я не специалист писать мануалы, то либо тему буду дополнять по мере необходимости либо просто на словах описывать как решаю те или иные задачи.
Сам интерпретатор уже скомпиленный в архиве. Тут же основное его ядро в сорце. К нему конечно есть еще модули, но они используются и в других проектах, поэтому я их не прикладываю. Кому захочется поштудировать мой индокод - основная функция TAlisaInterpretter.LetsDo. Это старт синтексического разбора и выполнения. Интерпретатор многопроходный. Кэширования или прекомпиляци нет, и делать не планирую. Скорость мне не особо важна. Исходник конечно замусорен, писал я его без продумывания определенной схемы, а как получится. Не считаю это препятствием ибо писал для себя. Даж не знаю чего еще сказать... Думаю по мере дополнения в этой теме в целом картина вырисуется.
I'm learning to live...
Последний раз редактировалось Stilet; 26.05.2015 в 17:19. |
01.05.2015, 10:52 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Некоторые основы
Код:
I'm learning to live...
|
01.05.2015, 10:53 | #3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Примерная схема функций
Код:
I'm learning to live...
|
01.05.2015, 11:09 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
7Z упаковщик.
Имеется возможность работать с архивами посредством 7z.
Для этого нужна 7z.dll из стандартной поставки. Создание обьекта: Код:
Внесение в список архивируемого некоего файла. Внесение происходит посредством формирования списка в переменную-объект архива Код:
Расширение автоматически подставляется deletesource говорит о том что упакованное нужно удалять Код:
Распаковка: Код:
Список файлов в архиве: Код:
Анонимка onfound срабатывает для каждого файла, который перечисляется методом list в архиве. Код:
I'm learning to live...
Последний раз редактировалось Stilet; 01.05.2015 в 12:59. |
01.05.2015, 11:26 | #5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
ADO. ODBC.
Для этого тоже есть свой класс.
Создается таким образом: Код:
Открытие запроса: Код:
Код:
Проход по набору либо так: Код:
Или так: Код:
BLOB поля есть : Код:
Этот же пример показывает что есть возможность параметрических запросов. frf - параметр, которому что-то назначается. Список методов следующий: (call base.next) - переход на следующую запись (call base.error) - возврат текста ошибки (call base.eof ) - проверка на конец набора (call base.noteof ) - проверка на не конец набора (call base.isnull field='ИмяПоля') - проверка на NULL (call base.close ) - Закрытие набора (call base.commit) - Коммит (Роллбэка нет) (call base.fieldcount ) - Кол-во полей (call base.fieldname 3) - Имя поля по номеру. 3 это номер поля (call base.fieldtype 3) - Тип поля (call base.fieldsize 3) - размер поля Поля нумеруются с нуля. Как в Делфи Небольшой пример: Код:
I'm learning to live...
Последний раз редактировалось Stilet; 01.05.2015 в 11:36. |
01.05.2015, 11:57 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Немного о списке
Список назначается обьектом list
Код:
Добавлять так: Код:
Соответственно вытаскивать либо обращаясь к массиву Код:
Код:
Так же прикручен аналог StringList Код:
Код:
Сохранение и загрузка соответственно происходят методами: Код:
Код:
Удаление из списка Код:
Поиск: Код:
Кол-во элементов Код:
Проход по списку: Код:
Текст целиком: Код:
Очистка Код:
Есть еще метод addfrom. Код:
Делал под определенную задачу. А так редко использую. К списку можно обращаться как к массиву: Код:
I'm learning to live...
|
01.05.2015, 12:17 | #7 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
CryptoAPI. Шифровалка.
Это делалось чисто из интереса, и применения криптованию пока не найдено.
Класс crypt. Код:
hash - алгоритм key - ключ pass - пароль для хеширования Еще пример: Код:
Далее можно криптовать: Код:
Если произойдет ошибка метод error вернет текст. Можно шифровать файлы: Код:
Дешифровка соответственно: Код:
To - получатель (во что пойдет шифрование) Еще прикрутил шифрование по сертификату с указанными параметрами: Код:
Но эта возможность на стадии прототипирования, еще требует марафетика. Есть возможность получения списка сертификатов из хранилища: Код:
Есть возможность сгенерировать открытый или закрытый ключик: Код:
Или же открыть сорц и посмотреть как я там это реализовал. Собственно можно открыть уже сгенерированное: Код:
Высадка делается из контейнера, который обьектом сгенерирован заранее. Открыть контейнер можно при создании объекта: Код:
Кроме экспорта можно просто прочитать параметры ключа в открытом контейнере Код:
Удаление контейнера с ключиками: Код:
I'm learning to live...
|
01.05.2015, 12:26 | #8 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,648
|
Уже высказывал свое ИМХО по поводу скобок: слишком много их, легко запутаться. Я обычно и в арифметических выражениях стараюсь избегать вложенность скобок более двух уровней, если такое получается, то выражение разбиваю на несколько, например, числитель и знаменатель дроби считаю раздельно, а потом делю. Это существенно повышает читабельность.
E-Mail: arigato.freelance@gmail.com
|
01.05.2015, 12:54 | #9 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
DBF. FoxPro
С DBF-никами пригодится работать чрезвычайно плотно.
Причем в разных условиях. Поэтому использую как и Фокспро (основа взаимодействия с ядром описана тут: http://www.programmersclub.ru/%D0%91...visual-foxpro/), так и своеписанный мезанизм (типа TDbf Делфийского). Собсно и сам TDbf был прикручен. Для начала опишу самописку: Код:
После чего дописывается запись в конец. Имена полей перечисляются как параметры. Пометка на удаление: Код:
Физического удаления не происходит. Проход по набору или таблице - тот же scan. Код:
Есть метод Код:
Так же есть Код:
Таким образом конструкция Код:
Закрывает файл метод Код:
Есть еще метод Код:
Для открытия существуюшей таблицы применяется метод Код:
Такс... Что я еще не описал? Пожалуй только получение номера записи. Делается это обращением к элементу объекта d['recno']. Так что поля с таким именем лучше в DBF не делать, иначе обрабатываться будет коряво. Теперь Фокспро. Для его фунциклирования требуются библы: msvcrХХ.dll VFPxENU.DLL VFPxRENU.DLL vfpxt.dll Где x - версия фокспрошки и Сишного рантайма Плюс провайдер, сформированный и зарегистрированный как описано в статье, ссыль которой я привел выше. Обьект создается так: Код:
Код:
Тут мало методов. Основное все вызывается методами func и proc. Примерно так: Код:
Таким образом в Алисе можно писать целые скрипты для Фокспро. Этим же методом выполняются и SQL: Код:
Код:
Напрмиер Код:
Для foxpro класса так же есть scan для прохода по таблице или набору (см. выше) Есть еще методы reg и unreg, которые регистрируют провайдера, но это тупо аналоги regsvr32, и их я не использую.
I'm learning to live...
|
01.05.2015, 12:56 | #10 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
И к тому же так удобнее было для разработки анализатора. Анализировать от скобки до скобки. Такс, пока перерывчик. Позже продолжу...
I'm learning to live...
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хочу написать программу для себя | Marishka.S | Помощь студентам | 7 | 02.10.2011 17:23 |