Команда CALL

Выполняет двоичный файл, внешнюю команду или внешнюю функцию, помещенную в память с помощью команды LOAD. Включена для совместимости с предыдущими версиями. Используйте вместо нее команду SET LIBRARY.

Синтаксис:

CALL BinaryFileName
	[WITH cExpression | WITH MemVarName1]
	[TO MemVarName2]
	[SAVE | NOSAVE]

Параметры:
BinaryFileName
В FoxPro для Windows и FoxPro для MS-DOS задает двоичный файл, который следует вызвать. Имя файла можно указывать без расширения.
В FoxPro для Macintosh задает резидентную в памяти внешнюю команду или функцию, которую следует выполнить.
WITH cExpression | WITH MemVarName1
Задает символьную строку, переменную памяти или элемент массива, передаваемые в качестве параметра в двоичную подпрограмму, внешнюю команду или внешнюю функцию. Переменная памяти и элемент массива могут иметь любой тип данных.
В FoxPro для Windows и FoxPro для MS-DOS в двоичную подпрограмму можно передать только один параметр. Когда выполняется вызванный двоичный файл, сегмент кода первоначально указывает на начало модуля. Пара регистров DS и BX указывает на первый байт параметра, передаваемого с помощью предложения WITH. Если параметр не передается, BX содержит 0.
В FoxPro для Macintosh можно передать несколько параметров в составе символьного выражения, разделяемого запятыми.
TO MemVarName2
Задает переменную памяти или элемент массива, в который возвращается значение из двоичной программы, внешней команды или внешней функции.
SAVE | NOSAVE
В FoxPro для Windows и FoxPro для MS-DOS команды CALL и LOAD обе поддерживают ключевое слово SAVE для использования в двоичных программах, осуществляющих запись на экран.
В FoxPro для Macintosh предложения SAVE и NOSAVE игнорируются.
NOSAVE используется по умолчанию. Вы можете задать SAVE при вызове двоичной программы с помощью команды CALL. Предложения SAVE и NOSAVE можно включать при загрузке двоичной программы в память с помощью команды LOAD. Если в команде CALL задано предложение SAVE или NOSAVE, оно отменяет установку SAVE или NOSAVE, заданную в команде LOAD.
Если вы выдали команду CALL ... SAVE, FoxPro для Windows и FoxPro для MS-DOS при возвращении из двоичной программы копируют текущее содержимое оперативной видеопамяти в основное окно FoxPro для Windows или FoxPro для MS-DOS (в предположении, что двоичная программа пишет непосредственно в видеопамять). Это означает, что вся информация, записанная двоичной программой, становится доступной FoxPro для Windows и FoxPro для MS-DOS и обрабатывается так, как будто она записана средствами FoxPro для Windows или FoxPro для MS-DOS. В частности, если действует установка SAVE, такие извне записанные данные не будут стерты, когда объект FoxPro для Windows или FoxPro для MS-DOS впервые перекроет их при перемещении мышью.
Предложением SAVE рекомендуется пользоваться только в случае крайней необходимости, поскольку при каждом возвращении из двоичной программы FoxPro для Windows и FoxPro для MS-DOS тратит некоторое время на сканирование и сохранение содержимого экрана.
Внимание. При работе в FoxPro для Windows и FoxPro для MS-DOS необходимо придерживаться следующих правил в отношении интерфейса языка ассемблера:
Используя в двоичном файле строковые переменные, не меняйте длину строки. Список областей свободной памяти может оказаться испорченным даже после изменения длины строковой переменной лишь на 1 байт.
Если вы сохраняете адрес строки до следующего вызова, то непосредственно перед использованием строковой переменной необходимо также переустановить адрес строки, по которому вы собираетесь производить запись.

Комментарии:
Команда CALL игнорируется в Visual FoxPro. Используйте вместо нее для открытия библиотеки API-интерфейса команду SET LIBRARY.
В FoxPro для Windows и FoxPro для MS-DOS команда CALL используется для выполнения пользовательских двоичных программ непосредственно из памяти. Команда LOAD помещает двоичный файл в память, а CALL выполняет загруженный двоичный файл.
В FoxPro для Macintosh команда CALL используется для выполнения внешней команды (XCMD) или внешней функции (XFNC), помещенной в память с помощью команд SET XCMDFILE и LOAD.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 27.11.2002