Scientific Research Automation Center

Vladivostok time:

E-mail: a@kornienko.ru

Быстрые ссылки

  1. Visual FoxPro и 64 бит
  2. Visual FoxPro и Web
  3. Visual FoxPro и .Net
  4. Visual FoxPro и SQLite3

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 апреля, 2025

Microsoft VFP имеет ограничение на размер файла БД и на количество записей в нем. Отчасти проблему размера файла dbf решает VFPA, но проблема максимального числа записей в файле приблизительно до 1 миллиарда записей — не решима. К тому же чтобы получить на сегодняшний день VFPA нужно оформлять платную подписку. Многие разработчики уже перешли на другие СУБД и в том числе на SQLite3.

SQLite3 предлагает встраивать библиотеку sqlite3.dll в двух вариантах — для 64-х и 32-х битных программ. Ну что ж, делаем COM.SQLite и COM.SQLite32, используя предлагаемые консорциумом SQLite библиотеки. Учитывая API SQLite, создаем 5 методов:

  1. Open();
  2. DoCmd();
  3. Next();
  4. Eof() и
  5. Close().

Этого достаточно для создания и управления БД на SQLite.

Теперь на Visual FoxPro можно использовать БД SQLite:

SQLite = CreateObject('COM.SQLite32'),

как в прочем можно использовать и на других языках, в том числе на C# без установки каких-либо дополнительных пакетов.

Описание методов и библиотеки с объектами COM.SQLite и COM.SQLite32 находятся здесь: github.com.




© a.kornienko.ru. All rights reserved.