|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.05.2015, 15:10 | #11 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Работа с файловой системой
Часто использую самые примитивные функции для работы с файлами.
Чтоб с ними работать нужно создавать обьект filesystem Код:
Код:
Так же есть функции копирования Код:
Код:
Функция удаления Код:
Функция создания каталога Код:
Функция проверки наличия каталога Код:
Код:
Код:
I'm learning to live...
|
01.05.2015, 15:14 | #12 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,774
|
Что-то многим в Рунете лисповские скобки нравятся, даже не ожидал.
А прямого импорта системных функций нет? Чтобы можно было написать что-то типа: Код:
|
01.05.2015, 15:26 | #13 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
FTP Клиент
Очень часто используемые действия - работа с FTP.
Для этого есть класс, подключаемый примерно так: Код:
Думаю не обязательно пояснять что они означают, названия говорят сами за себя. Для загонки файлов в стойло FTP есть следующий метод: Код:
Код:
to - куда (либо конкретно файл, либо каталог, если загон нескольких файлов) Получение файлов аналогично: Код:
Посыл команды серверу: Код:
Собственно коды ответа в результате не режутся. Если нужно их отрезать то делается это отдельно. Можно будет допилить чтоб отрезались, но пока меня устраивает. Получение списка с FTP: Ну тут два варианта: Код:
И потом обычный проход итератором. Либо же анонимкой: Код:
Можно было бы конечно имя не пихать в массив с индексом file, но я делал на будущее, когда понадобится получать не просто краткий список а еще дату, время и атрибуты. Больше я не доделывал фичек для работы с FTP, пока хватает и такого. А там видно будет.
I'm learning to live...
|
01.05.2015, 15:28 | #14 | |||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Да и утверждение "муляют глаза куча скобок" скорее миф. Писать просто не надо так чтоб муляло. Цитата:
Цитата:
Тем паче что простота языка оказывается важной. Вон сколько у PHP всякого наворочали. А толку? Используется от силы 5-10%
I'm learning to live...
|
|||
01.05.2015, 15:54 | #15 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
HTTP
По аналогии с FTP есть возможность работы с HTTP.
Причем реализован как клиент так и сервер, хотя второе на стадии прототипа, но уже работает. Правда требует марафета. Класс http: Код:
Получение контента в файл: Код:
Параметр to тоже опционален, если он указан - результат идет в файл, иначе возвращается функцией в переменную. Если идет возврат в переменную, то по умолчанию происходит парсинг DOM. Для этого использую MSHTML. Соответственно после получения можно и пройтись по "дому" Для этого существует метод scan Код:
Сразу оговорюсь - иерархия дома разрушается, все теги считаются тегами верхнего уровня. Это было сделано специально. В будущем планирую пересмотреть составление списка тегов иерархически или по крайней мере XPath прикрутить. Да собсно для качалки сайтов и парсинга этого пока хватает. Так. Теперь сервер: Сходу маленький пример: Код:
В примере массив переменки-сервера получает параметр document, который хранит имя и (или) путь к документу, и сами параметры, тоже передаваемые в качестве элементов массива. Т.е. запрос типа http://Localhost/MyDoc?para=1¶2=ololo будет доступен по элементам h[para] h[para2] и h[document] будет равняться "/MyDoc" Возврашает нагенеренную страницу оператор Код:
Что-то типа Код:
Например я могу в конце обработчика просто написать Код:
Вообще я предусмотрел у себя правило, согласно которого последняя операция является возвратом результата. Как оказалось это очень удобно.
I'm learning to live...
|
01.05.2015, 16:07 | #16 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
SMTP. Отправка почты
Для этого есть класс mail
Код:
Код:
Метод send отправляет через MAIL сервер, указываемый параметром host определенному кренделю письмецо. Да больше и нечего сказать. Если необходимо что-то вложить можно сделать это следующей конструкцией: Код:
Константы естественно могут быть заменены на выражения: Код:
Минусы в кодировке, иногда письмо (текст или тема) приходят кракозябликами. Причем разные сервера по разному воспринимают. И почему то не работает указание через запятую нескольких получателей. Но это я буду разбираться позже.
I'm learning to live...
Последний раз редактировалось Stilet; 01.05.2015 в 20:38. |
01.05.2015, 22:26 | #17 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,774
|
На самом деле, если заглянуть в мой план, то у меня синтаксические возможности тоже будут раскручиваться в несколько этапов. И первый синтаксис, который будет реализован, носит рабочее название "Лисп-скобка-скобка" по аналогии с "Си-плюс-плюс".
Вместе с ним будет также реализован импорт системных функций: stdcall, cdecl, register и прочих. Ориентированность на системное программирование дает о себе знать. Всё это вместе должно дать возможность писать осмысленные программы на Канторе, думаю написать что-нибудь вроде тетриса. А сейчас, выходит, я застрял на реализации ключевого компонента системы -- БД кода. |
02.05.2015, 09:15 | #18 | |||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Тогда уж ((K)) - символ языка Кантор. Цитата:
Цитата:
I'm learning to live...
|
|||
02.05.2015, 09:55 | #19 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
FireBird. Особое внимание огнептицы (или с чего начиналась Алиса)
Нда. На эту "ангри бирд" все в основном изначально и затачивалось. Обьем работ с этой СУБД у меня коллосальный, поэтому класс работы с огнептичкой был первым.
Так то там все тоже самое что и выше описано в ADO, за исключением некоторых отличий. Создание объекта: Код:
Кратко приведу основные методы, схожие с ADOшным классом: open - То же самое что и в ADO, открывает набор. В параметр sql передается запрос exec - Выполняет команду без открытия. параметр sql имеет то же назначение next - Переход на следующую запись. error - Текст ошибки или пустая строка commit - Коммит (роллбэка тоже пока не прицепил) noteof - Такая же "афигевация" типа not eof для набора. scan - Проход по набору. Тоже заменил цикл, сделав проход удобным fieldcount - Кол-во полей fieldname - Имя поля. В качестве параметра без имени передается номер fieldtype - Тип поля (в виде строки). fieldsize - Размер поля (тоже по номеру поля) isnull - Проверка на NULL. Далее есть несколько плюшек, которые мне по работе необходимы. О них подробнее: Код:
Код:
Код:
Код:
Код:
Параметр where опционален, и может указать условие отбора для выгружаемого. Параметр to указывает на имя файла, куда будет сформирован скрипт. И так оно и есть. Очень часто использую выгрузку для того чтоб перенести данные на другую базу. По скорости гораздо быстрее получается чем прямая заливка из БД в БД. Смысл в том что данные выгруженные в скрипт сжимаются в zip, передаются приемнику, разжимаются и заливаются, считываясь из файла. В результате я получаю файлик примерно такого содержания: Код:
I'm learning to live...
Последний раз редактировалось Stilet; 02.05.2015 в 09:57. |
02.05.2015, 10:28 | #20 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
XML.
Вообще я особое внимание XML не уделял, ибо задачи с его участием у меня не часты. Но есть. Поэтому пришлось и таким дополнить.
Код:
параметр-флаг native указывает использование самописного мной парсера XML, который понятное дело очень урезан зато быстр и прост. Основан (или точнее наследует) на синтаксическом анализаторе самой Алисы, но немного дополнен. Если этот флаг не указываю, подключается виндовский MSXML. И вот во втором случае есть возможность отбора по XPath. Более менее живых примеров пожалуй нет, за исключением одного единственного модуля Код:
Далее вступает функция x.attr, в параметры которой передается список узлов DOM документа либо по имени либо по номеру. Функция возвращает значение аттрибута последнего элемента из списка. Т.е. (call x.attr 1 State Cd) по факту проходит путь /@first/State и возвращает значение аттрибута Cd. Можно было XPath применить. Не применил. Почему? Х.з. Просто не применил. Тем паче что с флагом native он бы не работал. Далее проверяется значение этого аттрибута и считываются из того же корневого узла другие аттрибуты других элементов. Увы самого XML у меня нет, поэтому пример рукописный: Код HTML:
<Pay id="002" Code="9G0722"> <Purchase PostCode="51256" Date="25.01.2011" /> <State Cd="VO" /> <DateTime Date="31.05.2011" Time="13:59:05" /> <MSGDetails>Фактура</MSGDetails> </Pay> Кроме attr есть метод text, который получает текст тега а не его аттрибутику. Т.е. Код:
Так же есть метод tag. Который получает имя тега. По номеру естесственно. Т.е. Код:
Если такого тега в пути нет вернет False. Конечно же и тут не обошлось без метода scan. Проход по всем элементам с указанием пути. Дом не рушится, как при работе с HTML При проходе итератор объекта получает массив с элементами path (путь в доме) text (текст в теге) и tag (имя элемента). Простой такой примерчик: Код:
Работает кстати не хуже самого XPath, так что остается только понаворотить его до уровня самого XPath. Но это если мне захочется особой конкуренции. Пока хватает и этого, главное сама база фильтрования есть, а допиливать ее дело не хитрое. Класс этот только читатель. Редактировать в нем документы не предусмотренно. Может быть потом сделаю это если понадобится.
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хочу написать программу для себя | Marishka.S | Помощь студентам | 7 | 02.10.2011 17:23 |