Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MB6REFRU.pdf
Скачиваний:
10
Добавлен:
13.02.2015
Размер:
3.83 Mб
Скачать

Оператор DDETerminateAll

Оператор DDETerminateAll

Назначение:

Закрывает все каналы DDELсвязи, которые были открыты программой MapBasic.

Предупреждение:

Использование этого оператора возможно только в среде Microsoft Windows.

Синтаксис:

DDETerminateAll

Описание:

Оператор DDETerminateAll закрывает все каналы DDELсвязи, которые были открыты "клиентом", программой MapBasic. Программы MapBasic могут быть запущены одновременно, и в каждой может быть открыто множество каналов. Оператор DDETerminateAll закрывает только те каналы, которые были открыты программой, выполнившей этот оператор. То есть, каждая из прикладных программ может открывать и закрывать только свои каналы.

Проделав необходимые Вам действия по обмену, необходимо завершить его закрытием канала одним из операторов DDETerminate или DDETerminateAll.

Ошибки:

В результате выполнения оператора может генерироваться код ошибки: ERR_CMD_NOT_SUPPORTED, если программа выполняется не в среде Windows.

Смотрите также:

DDEInitiate, DDETerminate

Справочник MapBasic

179

Оператор Declare Function

Оператор Declare Function

Назначение:

Объявляет имя функции и список ее параметров.

Предупреждения:

Этот оператор не может быть использован в окне MapBasic.

Вызов внешних функций (во втором варианте синтаксиса) зависит от вычислительной платформы. К DLLLбиблиотекам могут обращаться только WindowsLпрограммы; вызов функций XFCN возможен только на компьютерах Macintosh.

Синтаксис (вариант 1):

Declare Function fname

( [ [ ByVal ] parameter As var_type ]

[, [ ByVal ] parameter As var_type ... ] ) As return_type

где

fname – имя функции;

parameter – имя параметра функции;

var_type – стандартный для MapBasic тип данных для параметра или определенный с помощью оператора Type;

return_type – стандартный для MapInfo скалярный тип для величины, полученной в результате.

Синтаксис (вариант 2 – для Windows DLL или для Macintosh XFCN)):

Declare Function fname Lib "file_name" [ Alias "function_alias" ]

( [ [ ByVal ] parameter As var_type ]

[, [ ByVal ] parameter As var_type ... ] ) As return_type

где

fname – имя вызываемой функции;

file_name – имя DLLLфайла (для Windows) или имя файла, содержащего XFCN (для Macintosh); function_alias – настоящее имя внешней функции;

parameter – имя параметра функции;

var_type – стандартный для MapBasic тип данных для параметра или определенный с помощью оператора Type (в Macintosh – только стандартный скалярный тип);

return_type – стандартный для MapInfo скалярный тип для величины, полученной в результате.

Описание:

Оператор Declare Function объявляет об использовании функции, написанной на языке MapBasic, или внешней функции, а также объявляет типы параметров и результата функции.

Для написания функции на MapBasic используется оператор Function... End Function. Каждая такая функция должна быть объявлена оператором Declare Function.

Параметры могут пересылать значения функции двумя способами: ссылкой ("byLreference") или значением ("byLvalue"). Для того, чтобы объявить параметр значением, надо перед его именем использовать ключевое слово ByVal. По умолчанию параметр объявляется ссылкой. О различии в природе этих двух типов параметров можно прочитать в 4 главе Руководства пользователя MapBasic.

180

Справочник MapBasic

Оператор Declare Function

Обращение к внешней функции

Второй вариант синтаксиса используется для объявления внешней функции, которая может быть написана на другом языке (например, C или Pascal), или может храниться в отдельном файле. Если Ваша программа использует внешнюю функцию, то она должна быть объявлена так же, как и внутренняя функция программы MapBasic.

В Windows внешняя функция может быть вызвана из динамически загружаемой библиотеки (Microsoft Windows Dynamic Link Library или DLL). В Macintosh – из XFCN. Следует отметить, что синтаксис для обеих платформ ничем не различается. Дополнительную информацию о Windows DLL Вы можете получить в 11 главе Руководства пользователя MapBasic. Если оператор Declare Function объявляет внешнюю функцию, то параметр file_name должен задавать имя файла, содержащего его. Файл с внешними процедурами должен быть доступен во время выполнения программ.

Каждая внешняя функция имеет имя, которое ей дает автор при создании. Если это имя совпадет с именем стандартной функции MapBasic или не устраивает нас по другой причине, то нужно придумать другое имя для обращения к DLLLпроцедуре и присвоить его переменной fname, а настоящее имя, которое ей задал автор, указать в предложении Alias. Если нужды в псевдонимах не возникает, то переменной fname присваивается настоящее имя функции, а предложение Alias не нужно.

Если оператор Declare Function включает предложение Alias, то параметр function_alias должен совпадать с настоящим именем функции, а параметр fname должен задавать имя, по которому к ней обрщается MapBasic.

Ограничения для параметров внешней функции Windows DLL

Вы можете использовать разные типы значений. DLLLбиблиотека должна быть откомпилирована в режиме упаковки структур ("structure packing"). Смотрите 11 главу Руководства пользователя Map Basic.

Пример:

В этом примере определяется функция пользователя под названием "CubeRoot", которая вычисляет кубический корень из числа. Так как функция "CubeRoot" вызывается в тексте программы до определения самой функции Function... End Function, то в этом примере используется оператор Declare Function, определяющий аргумент функции и тип возвращаемого значения.

Declare Sub Main

Declare Function CubeRoot(ByVal x As Float) As Float Note Str$( CubeRoot(23) )

Function CubeRoot(ByVal x As Float) As Float CubeRoot = x ^ (1 / 3)

End Function

Обратите внимание на то, что синтаксис оператора Declare Function такой же, как оператора Func4 tion, только нет слова "Declare".

Смотрите также:

Declare Sub, Function... End Function

Справочник MapBasic

181

Оператор Declare Sub

Оператор Declare Sub

Назначение:

Объявляет имя и типы параметров подпрограммы.

Предупреждение:

Этот оператор не может быть использован в окне MapBasic.

Вызов внешних функций (во втором варианте синтаксиса) зависит от вычислительной платформы. К DLLLбиблиотекам могут обращаться только WindowsLпрограммы; вызов функций XFCN возможен только на компьютерах Macintosh.

Синтаксис: 1

Declare Sub sub_proc

[ ( [ ByVal ] parameter As var_type [, ... ] ) ]

где

sub_proc – имя подпрограммы;

parameter – имя параметра из списка подпрограммы;

var_type – тип значения параметра, стандартный или результат оператора Type.

Синтаксис (вариант 2 – для Windows DLL или Macintosh XCMD):

Declare Sub sub_proc Lib "file_name" [ Alias "sub_alias" ] [ ( [ ByVal ] parameter As var_type [, ... ]) ]

где

sub_proc – имя внешней процедуры; file_name – строка:

вWindows – имя DLLLфайла, включая DOSLмаршрут,

вMacintosh – имя файла, содержащего XCMD;

sub_alias – оригинальное имя процедуры; parameter – имя параметра процедуры; var_type – тип значения параметра:

вWindows – стандартные типы или тип, заданный оператором Type,

вMacintosh – только скалярные стандартные типы.

Описание:

Оператор Declare Sub объявляет имена процедур и списки их параметров. Обычно, каждому оператору Declare Sub соответствует одна subLпроцедура, которая находится ниже соответствующего оператора. Такая процедура создается в программе оператором Sub... End Sub и называется внутренней.

Параметры могут пересылать значения процедуре двумя способами: ссылкой ("byLreference") или значением ("byLvalue"). Для того, чтобы объявить параметр значением, надо перед его именем использовать ключевое слово ByVal. По умолчанию параметр объявляется ссылкой. О различии в природе этих двух типов параметров можно прочитать в 4 главе Руководства пользователя MapBasic.

Обращение к внешним процедурам

Второй вариант синтаксиса используется для объявления внешней процедуры, которая может быть написана на другом языке (например, C или Pascal), или храниться в отдельном файле. Если Ваша программа использует внешнюю процедуру, то она должна быть объявлена так же, как и внутренняя процедура программы MapBasic.

182

Справочник MapBasic

Оператор Declare Sub

В Windows внешняя процедура может быть вызвана из динамически загружаемой библиотеки (Microsoft Windows Dynamic Link Library или DLL). В Macintosh – из XFCN. В UNIX – из RPC. Следует отметить, что синтаксис для трех платформ ничем не различается. Дополнительную информацию о Windows DLL читайте в 11 главе Руководства пользователя MapBasic.

Если оператор Declare Sub объявляет внешнюю процедуру, то параметр file_name должен задавать имя файла, содержащего его. Файл с внешними процедурами должен быть доступен во время выполнения программ.

Каждая DLLLпроцедура имеет имя, которое ей дает автор при создании. Если это имя совпадет с именем стандартной процедуры MapBasic или не устраивает нас по другой причине, то нужно придумать другое имя для обращения к внешней процедуре и присвоить его переменной fname, а настоящее имя, которое ей задал автор, указать в предложении Alias. Если нужды в псевдонимах не возникает, то переменной fname присваивается настоящее имя процедуры, а предложение Alias не нужно.

Если оператор Declare Function включает предложение Alias, то параметр function_alias должен совпадать с настоящим именем функции, а параметр fname должен задавать имя, по которому к ней обращается MapBasic.

Ограничения для параметров внешней процедуры Windows DLL

Вы можете использовать разные типы значений. DLLLбиблиотека должна быть откомпилирована в режиме упаковки структур ("structure packing"). Смотрите описание оператора Type.

Ограничения для параметров внешней функции Macintosh XCMD

Вы не можете использовать массивы и сложные, специально определенные типы для пересылки значений между программой и внешней функцией.

Пример:

Процедура Cube вычисляет кубический корень от своего первого параметра.

Declare Sub Cube(ByVal original As Float, cubed As Float)

Dim x, result As Float

Call Cube(2, result)

'переменная result сейчас равна 8 (2 x 2 x 2) x = 1

Call Cube(x + 2, result)

'переменная result сейчас равна 27 (3 x 3 x 3) End Sub

Sub Cube (ByVal original As Float, cubed As Float) cubed = original ^ 3

End Sub

Смотрите также:

Call, Sub... End Sub

Справочник MapBasic

183

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]