3 Mb

Апрель 2012

 


Как организована работа внутри FoxPro
Кристоф Волленхопт (Christof Wollenhaupt), Fox-эксперт


FoxPro изнутри
Когда-то давно, инструментальное средство xBase не было языком программирования, это был инструмент для автоматического извлечения и манипулирования данными. Пользователи xBase-инструментов по роду своей основной деятельности не были разработчиками; они были специалистами в очень многих и самых разнообразных областях и использовали FoxBase, dBase и аналогичные инструменты для управления своими данными. xBase-инструменты непрестанно совершенствовались и, наконец, развились в полноценный язык программирования. СУБД FoxPro превратилась в профессиональную среду разработки, пик развития которой был ознаменован выходом версий FoxPro 2.5/2.6. Почти десять лет тому назад, в 1995 году, парадигма этого инструментального средства снова изменилась. Процедурный язык программирования стал объектно-ориентированным инструментом, который продолжает развиваться в многокомпонентную архитектуру.
СУБД Visual FoxPro – это не только объектно-ориентированная среда разработки, вроде Delphi или Visual Basic.NET. Visual FoxPro пока еще не утратила своих корней. Попробуйте-ка выполнить программу, созданную в среде Turbo Pascal 3.0, в версии Delphi 7.0. Как насчет выполнения программ, написанных на языке GW-BASIC, в среде Visual Basic.NET? А Foxbase? До сего дня в среде Visual FoxPro можно выполнять программный код, не внося в него никаких изменений, написанный в восьмидесятых годах. Вывод на экран смотрится не так хорошо, но вы все-таки можете, – почти через 20 лет после того, как он был написан, – выполнить этот код в версии VFP.
СУБД Visual FoxPro обеспечивает почти полную обратную совместимость. Если вдуматься, это значит, что немалая часть программного кода, написанного для версий FoxPro и FoxBase, до сих пор принадлежит Visual FoxPro. А это в свою очередь означает, что ориентация на объекты является надстройкой над FoxPro, а не наоборот. Многие странности в функциональном поведении ядра Visual FoxPro можно объяснить, только если задуматься над тем, как что-то следовало бы сделать в версии FoxBase, и только убедиться в том, что в Visual FoxPro это не делается как-то иначе.
Одно заблаговременное предупреждение: в следующих статьях делается попытка описать, как организована внутренняя работа СУБД Visual FoxPro. Подлинные «внутренности» FoxPro являются интеллектуальной собственностью фирмы Microsoft и не подлежат обнародованию. Всем, кто действительно знает, как организована внутренняя работа Visual FoxPro, запрещено говорить об этом, они подписали соглашение о неразглашении (Non-Disclosure Agreement - NDA). Я собрал нижеследующую информацию из различных открытых источников. Какие-то сведения есть в библиотеке MSDN, которую фирма Microsoft публикует ежеквартально (некоторые статьи существуют только в более старых версиях библиотеки MSDN). Другая информация была получена из примеров программного кода, которые поставляет фирма Microsoft. Большинство деталей, однако, добыты в результате тестирования и наблюдения, не только моих, но многих, многих разработчиков, рассказавших об этом на различных форумах. В частности, на основании знаний о различном поведении версий можно сделать выводы относительно внутреннего устройства VFP. В самых последних версиях FoxPro были доработаны некоторые из нижеследующих структур.

VFPX: объектно-ориентированные меню
Рик Шуммер (Rick Schummer)

Объектно-ориентированные меню – это, пожалуй, вторая функциональная возможность, которую на протяжении уже многих лет чаще всего просят добавить в Visual FoxPro. По какой-то причине фирма Microsoft так и не откликнулась на этот запрос (скорее всего, как мне кажется, это вопрос ресурсов). Дуг Хенниг (Doug Hennig) хотел иметь объектно-ориентированные меню и со временем реализовал свой собственный набор классов для решения этой задачи, и опубликовал эти классы на сайте VFPX, чтобы ими могли пользоваться, а также помогли их доработать другие разработчики.
Помимо прочего, первое, что я делаю, когда приступаю к работе над новым настольным приложением, – создаю проект. Второе мое действие – создание нового меню. Я часто копирую готовое меню, которое создал давным-давно, и которое включает базовые возможности, предоставляемые во всех моих приложениях. Это базовое меню включает стандартные Windows- панели – File (Файл), Edit (Правка), Windows (Окна) и Help (Справка). В нем есть также пустая панель View (Просмотр), в которую я добавляю опции для просмотра данных через формы ввода данных, пустая панель Reports (Отчеты) для выполнения различных отчетов приложения и меню System (Система) с опциями для таких вещей, как настройки безопасности, настройки приложения и журнал ошибок.
Одна из возможностей, о которых я мечтал все эти годы, пока занимаюсь разработкой с использованием Visual FoxPro, – это возможность создавать объектно-ориентированное меню. Вместо того, чтобы снова и снова копировать меню, я хочу создать подкласс моего базового меню. В таком подклассе я могу добавлять в меню новые панели (pads) и линейки (bars) для функциональных возможностей, которые специфичны для конкретного приложения.
Самое замечательное в объектно-ориентированном меню то, что новую возможность можно включить во все приложения сразу, добавив панель или линейку в базовое меню, из которого создаются все остальные меню. Было бы действительно замечательно, если бы фирма Microsoft добавила такую возможность в Visual FoxPro прежде, чем заявлять, что система обладает полным набором функций.
Другая привлекательная сторона объектно-ориентированного меню – это возможность так настроить его свойства и обращения к методам, что изменения в меню можно будет вносить без необходимости выполнять снова традиционный и, как правило, негибкий программный MPR-код, который каждый раз переопределяет меню. То есть, я веду речь о том, как удобно было бы иметь возможность сослаться на линейку меню и изменить ее текст, чтобы динамически настраивать меню в зависимости от того, в каком приложении оно используется, верно?
Ну что ж, среда разработки Visual FoxPro хороша тем, что нам не всегда надо ждать фирму Microsoft, чтобы добавить необходимые функции, и спасибо Дугу Хеннигу (Doug Hennig), мы можем использовать объектно-ориентированные меню, созданные на базе его проекта «OOP Menu», который опубликован на сайте VFPX.

VFP Entity Framework Provider
Том Бразерс (Tom Brothers )


В действии
Пример приложения (VfpEFQuerySamples) позволяет посмотреть как провайдер работает на самом деле. Приложение -пример построен на базе приложения "ADO.NET Entity Framework Query Samples" сконфигурированного для работы с данными Visual FoxPro. Пример доступен по ссылке (http://archive.msdn.microsoft.com/EFQuerySamples).

Преобразование между твипами и пикселями в Visual FoxPro
Пара функций для работы с твипами и пикселями
Дэн Маклеод (Dan Macleod)


При измерении объектов на экране разработчики Visual FoxPro используют пиксели. По умолчанию такие свойства объектов как height, width, top и left выражаются в пикселях.
ButНо иногда мы сталкиваемся с измерениями, выраженными в твипах- 1/1,440 дюйма. Строго говоря в дюйме содержится 72.27 твипов, но это число всегда округляется до 72, соответственно, мы имеем 1,440 твипов в дюйме.
Важно отметить, что твип не зависит от конкретного устройства. Объект, ширина которого составляет 1,440 твипов, всегда будет занимать на экране 1 дюйм, независимо от разрешения монитора. В то время как пиксель зависит от разрешения экрана.

Как создать набор реалистичных данных для тестирования
Предлагаю использовать несложные SQL скрипты для создания синтетических (но реалистичных) наборов для тестирования ваших приложеий.
Линн Эванс (Lynn Evans)


Одной из наиболее занудных задач, с которыми сталкиваются разработчики - создание тестовых данных для тестирования приложений. Если вы не можете использовать промышленные данные, особенно, если они включают персональную информацию (имя или адрес), вам приходится изобретать содержимое для сотен или тысяч записей, непростая задача, ненавистная для большиства из нас.
В этой статье я предлагаю короткие скрипты на SQL, которые позволят снять значительную часть нагрузки с разработчиков. Для упрощения задачи создайте таблицу с сокращенными данными по именам и адресам, т.е. таблицу с полями, хранящими имя, фамилию и город. Легко расширить этот принцип для создания более сложных адресов, добавив телефоны, потстовые адреса и сходные атрибуты.
Предлагаемый скрипт написан на T-SQL и предназначен для работы в среде Microsoft SQL Server (2005 и более старших версий). Но его легко адаптировать для работы с другими БД, включая MySQL, Oracle, Microsoft Access и Microsoft Visual FoxPro.


Возврат на основную страницу

К архивам

© Edel Ltd. Все права защищены. 2012 г.

Hosted by uCoz