Компилирует один или несколько исходных файлов и создает для каждого исходного объектный файл. Есть две версии синтаксиса.

COMPILE [DATABASE | FORM | CLASSLIB | LABEL | REPORT] cFileName | cFileSkeleton | ? [ALL]
COMPILE cFileName | cFileSkeleton | ? [ENCRYPT] [NODEBUG] [AS nCodePage]

Параметры

DATABASE

Компилируется один или несколько файлов базы данных (.dbc), указанных с помощью параметров cFileName или cFileSkeleton. При выборе параметра DATABASE компилирует исходный код для хранимых процедур, которые храниться в базе данных, и сохраняет его в дополнительном мемо-поле. Вы можете использовать параметр DATABASE для компиляции хранимых процедур вне Конструктора Баз Данных.

NoteЗамечание

COMPILE DATABASE упаковывает мемо-поля в мемо-файле базы данных (.dct) для удаления неиспользуемого пространства из мемо-файла. Записи таблицы базы данных, помеченные на удаление, не удаляются из этой таблицы.

FORM

Компилируется одна или несколько форм, определенных файлами (.scx), указанных с помощью параметров cFileName или cFileSkeleton. При выборе параметра FORM компилирует исходный код для среды данных, которая хранится в форме, и сохраняет его в дополнительном мемо-поле. Visual FoxPro автоматически компилирует формы, когда они сохраняются в Конструкторе Форм. Вы можете использовать параметр FORM для компиляции форм вне Конструктора Форм.

NoteЗамечание

Исходный код формы хранится в мемо-полях таблицы Формы. COMPILE FORM компилирует мемо-поля в объектный код и сохраняет его в дополнительном мемо-поле. Visual FoxPro выполняет сохраненный в дополнительном мемо-поле объектный код, когда Вы используете команду DO FORM. Более подробно, смотрите Команда DO FORM.

CLASSLIB

Компилирует один или несколько файлов библиотеки визуальных классов (.vcx), указанных с помощью параметров cFileName или cFileSkeleton. Исходный код библиотеки визуальных классов хранится в мемо-полях таблицы библиотеки визуальных классов. При выборе версии CLASSLIB исходный код мемо-полей компилирует в объектный код и сохраняет его  в дополнительном мемо-поле.

LABEL

Компилирует один или несколько файлов определения этикетки (.lbx), указанных с помощью параметров cFileName или cFileSkeleton. При выборе параметра LABEL компилирует исходный код для среды данных, который хранится в файле метки(этикетки), и сохраняет его  в дополнительном мемо-поле.

REPORT

Компилирует один или несколько файлов определения отчета (.frx), указанных с помощью параметров cFileName или cFileSkeleton. При выборе параметра REPORT компилирует исходный код для среды данных, который хранится в файле отчета, и сохраняет его  в дополнительном мемо-поле.

cFileName

Определяет целевой файл для компиляции.

Если Вы выбрали ни один из параметров, то следующая таблица описывает значения для cFileName, которое корреспондирует с параметром, который Вы выбирали.

Параметр cFileName

DATABASE

Имя базы данных, содержащей хранимые процедуры для компиляции. 
Вы можете компилировать хранимые процедуры в неоткрытой базе данных.

FORM

Имя формы для компиляции.

CLASSLIB

Имя библиотеки классов для компиляции.

LABEL

Имя этикетки для компиляции.

REPORT

Имя отчета для компиляции.

Если не указана ни один из параметров, например, FORM или REPORT, то в качестве cFileName можно указывать следующие файлы:

  • Program (.prg)

  • Form (.spr)

  • Menu (.mpr)

  • Query (.qpr)

  • Format (.fmt)

cFileSkeleton

Определяет набор или подмножество файлов, соответствующих файловому скелету, который может содержать символы шаблона, например, звездочка (*) или знак вопроса (?).

Например, для компиляции всех файлов базы данных, наименование которых начинается с буквы A, используйте следующую команду:
  CopyCode imageКопировать код
COMPILE DATABASE A*

Для компиляции всех файлов программ с расширением .prg в текущей директории или папке, используйте следующую команду:

  CopyCode imageКопировать код
COMPILE *.PRG
?

Отображает диалоговый бокс Compile, в котором Вы можете просмотреть и выбрать файл для компиляции.

ALL

Для файлов старой кросс-платформы, отчетов (.frx) и этикеток (.lbx), компилирует все записи для всех платформ Visual FoxPro в таблице формы и является доступной только для параметров REPORT и LABEL.

Предположим, что у Вас есть .frx файл, содержащий только записи Windows и Macintosh. При выполнении команды COMPILE на компьютере с Windows, опускают ALL, компилируя только записи Windows.
ENCRYPT

Кодирует скомпилированные программные файлы Visual FoxPro. Параметр не доступен при использовании параметров DATABASE, FORM, CLASSLIB, LABEL и REPORTENCRYPT предотвращает доступ к оригинальным исходным программам. Для дополнительной защиты исходного кода всегда включайте этот параметр при компиляции программ, предназначенных для распространения.

NODEBUG

Уменьшает размер скомпилированного файла на два байта для каждой строки исходного файла.  Параметр не доступен при использовании параметров DATABASE, FORM, CLASSLIB, LABEL и REPORT. Два байта, на которые уменьшается строка в скомпилированном файле, - это ссылка на соответствующую строку в исходном файле. Удаление этих двух байтов не влияет на исполнение программы, но зато уменьшает размер скомпилированного файла и, следовательно, экономит дисковое пространство.

NoteЗамечание

Когда Вы включаете параметр NODEBUG, то Вы не можете просмотреть выполняющуюся программу в окне Trace (Трассировки) или возвратить номер линии исходного кода с помощью функции MESSAGE(1)при возникновении ошибки. Более подробно, смотрите функцию MESSAGE( ).

AS nCodePage

Определяет кодовую страницу, в которой скомпилирован программный файл. Параметр не доступен при использовании параметров DATABASE, FORM, CLASSLIB, LABEL и REPORT. Кодовая страница компиляции, которую Вы определяете здесь, аннулирует кодовую страницу глобальной компиляции определенную в SET CPCOMPILE.

Expand imageСсылки

Visual FoxPro executes only object files, so if a source file has not been compiled, it is automatically compiled into an object file when you run the program. The source file remains unchanged. A separate compiled object file is created with the same root name as the source file, but with a different extension. The following table lists example source file extensions and compiled file extensions for each file type.

File type Source extension Compiled extension

Program file

PRG

FXP

Menu code

MPR

MPX

Query

QPR

QPX

Format

FMT

PRX

The compiler detects any syntax errors in the source file. If SET LOGERRORS is set to ON when the file is compiled, Visual FoxPro saves compilation error messages to a text file. The error log file has the same root name as the compiled file and has an .err file name extension. If SET LOGERRORS is set to OFF, the error log file is not created. For more information, see SET LOGERRORS Command.

If a form has an #INCLUDE header (.h) file, and the .h file is moved from its original directory, a compilation error occurs and is listed in the error log (.err) file. You can run the form, but if you modify it, you cannot save it until you correct the path to the .h file.

To correct the path for a moved header (.h) file

  1. Open the form using the MODIFY FORM command.

  2. On the Form menu, choose Include File.

  3. In the Include File dialog box, browse to or type the new path for the .h file.

For more information, see #INCLUDE Preprocessor Directive, MODIFY FORM Command, and Include File Dialog Box.

Expand imageПримеры

The following example uses CLOSE DATABASES to close all open databases and uses COMPILE DATABASE to compile all the stored procedures in the Visual FoxPro sample database, TestData.dbc.

  CopyCode imageCopy Code
CLOSE DATABASES
COMPILE DATABASE (HOME(2) + 'Data\TestData')

Expand imageСм. также