Быстрые ссылкиVisual FoxPro и 64 битАркадий K. 12 марта, 2025Очень эффективный язык программирования. К большому сожалению в настоящее время не развивается MS corp. Но тем не менее поклонники этого языка и базы данных, точнее г-н Чен, переработал двоичные коды этого продукта и выпустил 64-х битную версию языка под кодовым названием Visual Foxpro Advanced или VFPA, которая абсолютно совместима с последней версией VFP9 от МS corp. Чего на сегодняшний день не хватает в нем, так это доступа к большим объемам памяти. И от части это массивы, с которыми у VFP9 и VFPA совсем плохо. Реально массивы здесь малы и работа с ними порождает большие утечки памяти. То же касается и объекта класса EditBox, которому позволено содержать 100-мегобайтные тексты, но при этом память быстро утекает и помогает только quit. Ваш покорный слуга скромно решил эту проблему через использование многомиллионных массивов и гигантских строк/потоков, по крайней мере в сотню мегабайт, на COM вне памяти VFP9/VFPA. Придумываем нашему COM-серверу подходящее имя: VFP.memlib. Вполне возможно, что в следующих версиях в VFP.memlib будут добавлены другие требуемые методы, соответствующие его названию. Visual FoxPro и WebАркадий K. 14 марта, 2025Не будем углубляться в технологию клиент—сервер, об этом много информации можно найти в интернет. Речь ниже идет о серверной части ПО. MS Visual FoxPro напрямую не может использоваться на web-серверах по известным причинам. Во-первых он не имеет средств коммуникации со стандартным вводом-выводом. Во-вторых он визуальный, запуск, вывод различного рода служебных сообщений осуществляется визуально и часто эти сообщения переходят в режим ожидания ввода пользователя. Понятно, что можно писать программы так, чтобы исключить визуальное взаимодействие с пользователем. Кроме того c VFP можно работать, как с COM-объектом. Поэтому шансы есть. Задействуем разработанный ранее COM с названием VFP.memlib для создания объекта Stream, используемого в качестве стандартного ввода-вывода. Отключаем вывод ошибок на экран монитора и разрабатываем свой web-сервер, который способен отдавать запросы для VFP на COM-сервер с названием VisualFoxPro.Application. Придумываем нашему web-серверу подходящее название: http.net. На самом деле делаем их два http.net и https.net. Visual FoxPro и .NetАркадий K. 27 марта, 2025Большинство современных объектов и технологий находятся на платформе для разработчиков .Net или она же dotNet. А поскольку в .Net и VFP поддерживаются COM-объекты, это делает возможным использовать все возможности .Net в VFP. Исходя из актуальности и запросов VFP-сообщества добавим из .Net объект Task, который позволяет распараллеливать программы и выполнять их асинхронно, чего нет в VFP. Для этого в имеющейся в нашем багаже COM VFP.memlib добавим пару методов DoAsync() и WaitTask(). Поскольку мы используем объекты COM, сделаем наш новый метод DoAsync() чтобы он создавал задачу на основе произвольного метода произвольного COM-объекта. COM-объектами могут быть и программы и базы данных, например: Excel.application, com.sun.star.frame.Desktop, VisualFoxPro.Application, ADODB.Connection. Да и сам VFP позволяет легко создавать любые COM. Второй метод WaitTask() не просто ожидает завершения асинхронной задачи, но и возвращает результат её выполнения, если асинхронная задача что-то возвращает. Всё :-) за небольшое количество времени мы создали объект Task, который теперь доступен в VFP. Методы добавлены в тот же COM VFP.memlib (есть пример использования). Visual FoxPro и SQLite3Аркадий K. 22 апреля, 2025Microsoft VFP имеет ограничение на размер файла БД и на количество записей в нем. Отчасти проблему размера файла dbf решает VFPA, но проблема максимального числа записей в файле приблизительно до 1 миллиарда записей — не решима. К тому же чтобы получить на сегодняшний день VFPA нужно оформлять платную подписку. Многие разработчики уже перешли на другие СУБД и в том числе на SQLite3. SQLite3 предлагает встраивать библиотеку sqlite3.dll в двух вариантах — для 64-х и 32-х битных программ. Ну что ж, делаем COM.SQLite и COM.SQLite32, используя предлагаемые консорциумом SQLite библиотеки. Учитывая API SQLite, создаем 5 методов:
Этого достаточно для создания и управления БД на SQLite. Теперь на Visual FoxPro можно использовать БД SQLite: SQLite = CreateObject('COM.SQLite32'), как в прочем можно использовать и на других языках, в том числе на C# без установки каких-либо дополнительных пакетов. Описание методов и библиотеки с объектами COM.SQLite и COM.SQLite32 находятся здесь: github.com. |