- •Оператор Add Column
- •Оператор Add Map
- •Оператор Alter Button
- •Оператор Alter ButtonPad
- •Оператор Alter Cartographic Frame
- •Оператор Alter Control
- •Оператор Alter MapInfoDialog
- •Оператор Alter Menu
- •Оператор Alter Menu Bar
- •Оператор Alter Menu Item
- •Оператор Alter Object
- •Оператор Alter Table
- •Оператор AutoLabel
- •Оператор Beep
- •Оператор Browse
- •Предложение Brush
- •Функция ButtonPadInfo( )
- •Оператор Call
- •Функция•CartesianArea( )
- •Функция CartesianBuffer( )
- •Функция CartesianDistance ( )
- •Функция CartesianObjectLen( )
- •Функция CartesianPerimeter( )
- •Функция Centroid( )
- •Предложение CharSet
- •Функция ChooseProjection$()
- •Оператор Close All
- •Оператор Close File
- •Оператор Close Table
- •Оператор Close Window
- •Функция CommandInfo()
- •Оператор Commit Table
- •Оператор Continue
- •Предложения Control Button / OKButton / CancelButton
- •Предложение Control CheckBox
- •Предложение Control EditText
- •Предложение Control GroupBox
- •Предложения Control ListBox / MultiListBox
- •Предложение Control PopupMenu
- •Предложение Control RadioGroup
- •Предложение Control StaticText
- •Функция ConvexHull( )
- •Предложение CoordSys
- •Оператор Create Arc
- •Оператор Create ButtonPad
- •Оператор Create ButtonPads As Default
- •Оператор Create Cartographic Legend
- •Функция CreateCircle( )
- •Оператор Create Ellipse
- •Оператор Create Frame
- •Оператор Create Grid
- •Оператор Create Index
- •Оператор Create Legend
- •Оператор Create Line
- •Оператор Create Map
- •Оператор Create Map3D
- •Оператор Create Menu
- •Оператор Create Menu Bar
- •Оператор Create Object
- •Оператор Create Pline
- •Оператор Create Point
- •Оператор Create Ranges
- •Оператор Create Rect
- •Оператор Create Redistricter
- •Оператор Create Region
- •Оператор Create Report From Table
- •Оператор Create RoundRect
- •Оператор Create Styles
- •Оператор Create Table
- •Оператор Create Text
- •Функция CreateText( )
- •Функция DateWindow( )
- •Оператор DDEExecute
- •Оператор DDEPoke
- •Оператор DDETerminate
- •Оператор DDETerminateAll
- •Оператор Declare Function
- •Оператор Declare Sub
- •Оператор Define
- •Оператор Delete
- •Оператор Dialog
- •Оператор Dialog Preserve
- •Оператор Dialog Remove
- •Оператор Dim
- •Оператор Do Case...End Case
- •Оператор Do...Loop
- •Оператор Drop Index
- •Оператор Drop Map
- •Оператор Drop Table
- •Оператор End MapInfo
- •Оператор End Program
- •Процедура EndHandler
- •Оператор Error
- •Оператор Exit Do
- •Оператор Exit For
- •Оператор Exit Function
- •Оператор Exit Sub
- •Оператор Export
- •Оператор Fetch
- •Оператор Find
- •Оператор Find Using
- •Предложение Font
- •Оператор For...Next
- •Процедура ForegroundTaskSwitchHandler
- •Функция FormatDate$
- •Оператор Function...End Function
- •Оператор Get
- •Оператор Global
- •Оператор Goto
- •Оператор Graph
- •Оператор If...Then
- •Оператор Import
- •Оператор Include
- •Оператор Input #
- •Оператор Insert
- •Функция Int( )
- •Функция IsPenWidthPixels()
- •Оператор Kill
- •Функция LabelFindByID( )
- •Функция LabelFindNext( )
- •Функция Labelinfo( )
- •Оператор Layout
- •Функция LegendFrameInfo( )
- •Функция LegendInfo( )
- •Функция LegendStyleInfo( )
- •Оператор Line Input
- •Процедура Main
- •Функция MakeCustomSymbol( )
- •Функция MakeFontSymbol( )
- •Оператор Map
- •Функция Map3dInfo( )
- •Оператор Menu Bar
- •Функция MenuitemInfoByID( )
- •Оператор Metadata
- •Оператор Note
- •Функция NumAllWindows( )
- •Оператор Objects Check
- •Оператор Objects Combine
- •Оператор Objects Enclose
- •Оператор Objects Erase
- •Оператор Objects Intersect
- •Оператор Objects Overlay
- •Оператор Objects Split
- •Оператор OnError
- •Оператор Open File
- •Оператор Open Report
- •Оператор Open Table
- •Оператор Open Window
- •Оператор Pack Table
- •Предложение Pen
- •Функция PenPattern()
- •Функция PenWidthToPoints()
- •Функция PointsToPenWidth()
- •Оператор Print
- •Оператор Print #
- •Оператор PrintWin
- •Оператор ProgressBar
- •Оператор Put
- •Оператор Randomize
- •Оператор ReDim
- •Оператор Register Table
- •Оператор Reload Symbols
- •Процедура RemoteMapGenHandler
- •Процедура RemoteMsgHandler
- •Оператор Remove Cartographic Frame
- •Оператор Remove Map
- •Оператор Rename File
- •Оператор Rename Table
- •Оператор Reproject
- •Оператор Resume
- •Оператор Rollback
- •Оператор Run Application
- •Оператор Run Command
- •Оператор Run Menu Command
- •Оператор Run Program
- •Оператор Save File
- •Оператор Save Window
- •Оператор Save Workspace
- •Оператор Seek
- •Процедура SelChangedHandler
- •Оператор Select
- •Оператор Server Begin Transaction
- •Оператор Server Bind Column
- •Оператор Server Close
- •Функция Server_ColumnInfo( )
- •Оператор Server Commit
- •Функция Server_Connect( )
- •Оператор Server Create Map
- •Оператор Server Disconnect
- •Функция Server_DriverInfo( )
- •Функция Server_EOT( )
- •Функция Server_Execute( )
- •Оператор Server Fetch
- •Функция Server_GetodbcHConn( )
- •Функция Server_GetodbcHStmt( )
- •Оператор Server Link Table
- •Функция Server_NumCols( )
- •Функция Server_NumDrivers( )
- •Оператор Server Refresh
- •Оператор Server Rollback
- •Оператор Server Set Map
- •Оператор Set Application Window
- •Оператор Set Area Units
- •Оператор Set Browse
- •Оператор Set Cartographic Legend
- •Оператор Set Command Info
- •Оператор Set CoordSys
- •Оператор Set Date Window
- •Оператор Set Digitizer
- •Оператор Set Distance Units
- •Оператор Set Drag Threshold
- •Оператор Set Event Processing
- •Оператор Set File Timeout
- •Оператор Set Format
- •Оператор Set Graph
- •Оператор Set Handler
- •Оператор Set Layout
- •Оператор Set Legend
- •Оператор Set Map
- •Оператор Set Map3D
- •Оператор Set Next Document
- •Оператор Set Paper Units
- •Оператор Set ProgressBars
- •Оператор Set Redistricter
- •Оператор Set Resolution
- •Оператор Set Shade
- •Оператор Set Style
- •Оператор Set Table
- •Оператор Set Target
- •Оператор Set Window
- •Оператор Shade
- •Оператор StatusBar
- •Оператор Stop
- •Функция StyleAttr( )
- •Оператор Sub...End Sub
- •Предложение Symbol
- •Оператор Terminate Application
- •Функция Time()
- •Процедура ToolHandler
- •Оператор Type
- •Оператор UnDim
- •Функция UnitAbbr$( )
- •Оператор Unlink
- •Оператор Update
- •Оператор Update Window
- •Оператор While...Wend
- •Процедура WinChangedHandler
- •Процедура WinClosedHandler
- •Процедура WinFocusChangedHandler
- •Оператор Write #
- •Приложение A: Таблица кодов символов
- •Приложение В: Арифметические и географические операторы
- •ИНДЕКС
Оператор Dialog Preserve
Оператор Dialog Preserve
Назначение:
Открывает диалог снова после нажатия клавиш типа "OK" или "Отмена".
Синтаксис:
Dialog Preserve
Предупреждение:
Этот оператор может быть использован только в процедуре обработчика кнопок типа OKButton и CancelButton.
Этот оператор не может быть использован в окне MapBasic.
Описание:
Оператор Dialog Preserve позволяет приостановить закрытие диалога, созданного в программе оператором Dialog, нажатием на кнопки типа OkButton или CancelButton.
Оператор Dialog Preserve позволяет Вам подтверждать закрытие диалога. Например, пользователь нажимает на кнопку "ОК" (элемент диалога OkButton). Обработчик кнопки вызывает диалог, спрашивающий: "Вы хотите заменить старые значения колонки на новые?" (функция Ask( )). Если пользователь выберет кнопку "Нет", обработчик выполнит оператор Dialog Preserve и вернет выполнение в первоначальный диалог.
Пример:
Следующий отрывок может быть процедуройLобработчиком кнопки CancelButton.
Sub confirm_cancel
If Ask(”Изменения будут утеряны. Продолжить?”, ”Да”, ”Нет”) = FALSE Then
Dialog Preserve
End If
End Sub
Смотрите также:
Alter Control, Dialog, Dialog Remove, ReadControlValue( )
Справочник MapBasic |
193 |
Оператор Dialog Remove
Оператор Dialog Remove
Назначение:
Закрывает диалог, созданный оператором Dialog.
Синтаксис:
Dialog Remove
Предупреждение:
Оператор работает только в процедуре обработчика элемента диалога.
Вы не можете использовать оператор в окне MapBasic.
Описание:
Оператор Dialog Remove закрывает диалог, построенный с помощью оператора Dialog.
Автоматически диалоговое окно закрывается по нажатию на кнопки OkButton или CancelButton. Оператор Dialog Remove позволяет выйти из диалога до выбора этих кнопок. Это полезно, например, если диалоговое окно имеет списковый элемент диалога ListBox. Указав дважды на элемент списка, Вы можете закрыть диалог.
Пример:
Эта процедура – часть программы NVIEWS.MB. Она выполняет роль обработчика спискового элемента (ListBox) диалога "Именованные Виды". Если пользователь указывает в список, используя одно нажатие на клавишу мышки, обработчик оставляет возможность закрыть диалог при помощи кнопок. Если пользователь указывает в список, используя двойное нажатие на клавишу мышки, обработчик использует оператор Dialog Remove для закрытия диалогового окна. Заметим, что MapL Info вызывает этот обработчик и тогда, когда клавиша мышки нажимается один раз, и тогда, когда пользователь использует двойное нажатие.
Sub listbox_handler Dim i As SmallInt Alter Control 2 Enable Alter Control 3 Enable
If CommandInfo(CMD_INFO_DLG_DBL) = TRUE Then
’
’ ... когда в списке было использовано ' двойное указание.
’
i = ReadControlValue(1) Dialog Remove
Call go_to_view(i) End If
End Sub
Смотрите также:
Alter Control, Dialog, Dialog Preserve, ReadControlValue( )
194 |
Справочник MapBasic |
Оператор Dim
Оператор Dim
Назначение:
Объявляет тип одной или более переменных.
Предупреждение:
Если оператор Dim используется в окне MapBasic, то один оператор Dim может объявить тип только одной переменной. В окне MapBasic нельзя объявить массив переменных.
Синтаксис:
Dim var_name [, var_name ... ] As var_type [, var_name [, var_name ... ] As var_type ... ] где
var_name – имя объявляемой переменной; var_type – тип для переменной.
Описание:
Оператор Dim объявляет имя и тип локальной переменной перед употреблением их в процедуре.
В следующей таблице перечислены все стандартные типы переменных, которые Вы можете объявить в операторе Dim:
Значение var_type |
Описание |
SmallInt |
Короткое целое число от L32767 до 32767 включительно; |
|
используется два байта. |
Integer |
Целое число от L2147483647 до +2147483647 включительно; |
|
используется четыре байта. |
Float |
Число с плавающей запятой; занимает восемь байт в формате IEEE. |
String |
Символьная строка не более 32767 байт. |
String * length |
Символьная строка фиксированной длины (здесь length задает длину |
|
строки до 32767 байт). Заранее предполагается, что это строки |
|
пробелов. |
Logical |
TRUE или FALSE, 1 или 0; используется два байта. |
Date |
Дата в формате MM/DD/YYYY, используется четыре байта: два |
|
байта – год, один байт – месяц, один байт – день. |
Object |
Графический объект (Точечный, Регион, Линия, Полилиния, Дуга, |
|
Прямоугольник, Сглаженный Прямоугольник, Эллипс, Текстовый |
|
или Рамка). |
Alias |
Имя колонки. |
Pen |
Установка стиля линии. |
Brush |
Установка стиля штриха. |
Font |
Установка стиля шрифта. |
Symbol |
Установка стиля символа для точечного объекта. |
Справочник MapBasic |
195 |
Оператор Dim
Место для оператора Dim и область использования переменных в программе
Каждая локальная переменная должна быть объявлена в процедуре или функции перед тем, как на неё ссылаться (то есть внутри конструкций Sub...End Sub и Function...End Function). Другими словами, оператор Dim должен предшествовать тем операторам, в которых эти переменные используются. Обычно операторы Dim для всех переменных, используемых в процедуре, располагаются в первых строках процедуры или функции.
Если оператор Dim используется вне тела процедуры или функции, то объявляются переменные для многомодульного уровня. Значения таких переменных могут использоваться во всех процедурах и функциях одного модуля, который участвует в сборке проекта.
Для объявления глобальных переменных используется оператор Global. Значение глобальной переменной доступно всем процедурам и функциям всех модулей проекта.
Объявление нескольких переменных в одном операторе
Один оператор Dim позволяет объявлять сразу несколько переменных одного типа. Напишите их имена через запятую:
Dim i_counter, i_min, i_max As Integer
Dim s_name As String
Можно также в одном операторе объединить объявление нескольких переменных разного типа. Например:
Dim i_counter, i_min, i_max As Integer, s_name As String
Массивы переменных
MapBasic поддерживает одномерные массивы переменных. Если в операторе Dim после имени var_name стоит пара скобок, то это имя понимается как имя массива. При объявлении типа массива переменных Вы можете также задать размерность массива. Например, следующему массиву вещественных переменных задана размерность десять:
Dim f_stats(10) As Float f_stats(1) = 17.23
Число в скобках во второй строке примера является индексом массива, и задает порядковый номер элемента массива.
Изменить размерность массива в ходе программы можно оператором ReDim. Для определения текущей размерности массива используется функция UBound( ). Если оператор Dim объявляет массив с пустыми скобками, то массиву присваивается нулевая размерность. При этом массив не занимает в памяти места. Для его использования в нужный момент Вы всегда можете задать ему новую размерность оператором ReDim.
В 16Lбитной версии Windows массив MapBasic может содержать не более 7000 элементов. В MacinL tosh и 32Lбитной версии Windows – не более 32767 элементов.
Строковые переменные
Длина строковой переменной не должна превышать 32 К. Однако символьная строка, участвующая в операции присваивания (как в следующем примере), не должна превышать 256 символов.
Dim status As String
status = "Это строковая константа... "
196 |
Справочник MapBasic |
Оператор Dim
При выполнении оператора Dim MapBasic, подобно другим BASICLязыкам, автоматически заполняет строковые переменные фиксированной длины пробелами. Другими словами, когда Вы объявляете строковую переменную в 10 байт, а в нее помещаете пятисимвольную строку, то оставшиеся пять позиций будут заполнены пробелами. (Это может быть полезно при формирования таблицы из строк текста.) Строковые переменные свободной длины при объявлении ничем не заполняются, вернее, значение переменной типа String сразу после выполнения оператора объявления равно пустому значению.
В следующем фрагменте оператор If... Then определяет равенство на самом деле неравных строк:
Dim |
s_var_len |
As |
String |
|
Dim |
s_fixed_len |
As |
String |
* 10 |
s_var_len = "тест" |
|
|
|
s_fixed_len = "тест" |
|
|
|
If s_var_len = |
s_fixed_len |
Then |
|
Note "строки |
равны" |
' |
этого никогда не случится |
Else |
|
|
|
Note "строки |
не равны" |
' |
это случится обязательно |
End If |
|
|
|
Ограничения при выборе имени для переменной
В именах переменных большие и маленькие буквы не различаются. Так, если оператор Dim объявил переменную abc, то в дальнейшем к ней можно обращаться и abc, и ABC, и Abc.
Имя переменной может состоять не более чем из 31 символа, которыми могут быть буквы латинского алфавита, цифры и знак подчеркивания. Имена переменных могут также использовать следующие знаки пунктуации: $, %, &, !, # и @ , но только в конце имени. Например, именем переменной может быть LastName$, но не Last$Name. Имя переменной также не может начинаться с цифры.
Для имен переменных Вы также не можете использовать слова, которые использует язык MapBasic как ключевые, например, такие как Open, Close, Set и Do. Если Вы объявили переменную под именем “Set”, то при компиляции MapBasic сгенерирует ошибку. В следующей таблице приведены слова, которые не должны использоваться в качестве имен переменных.
Add |
Drop |
Insert |
Rename |
Alter |
Else |
Layout |
Resume |
Browse |
ElseIf |
Map |
Rollback |
Call |
End |
Menu |
Run |
Close |
Error |
Note |
Save |
Commit |
Event |
Objects |
Seek |
Create |
Exit |
OnError |
Select |
DDE |
Export |
Open |
Set |
DDEExecute |
Fetch |
Pack |
Shade |
DDEPoke |
For |
StatusBar |
Справочник MapBasic |
197 |
Оператор Dim
DDETerminate |
Function |
PrintWin |
Stop |
DDETerminateAll |
Get |
ProgressBar |
Sub |
Declare |
Global |
Put |
Type |
Delete |
Goto |
ReDim |
Update |
Dialog |
Graph |
Register |
While |
Dim |
If |
Reload |
|
Do |
Import |
Remove |
|
В некоторых BASICLязыках тип переменной диктует написание ее имени. Например, если переменная имеет имя со знаком доллара в конце (LastName$), то она понимается как строковая. В языке MapBasic это не работает, тип переменной надо объявлять явно.
Начальные значения переменных
При объявлении численных переменных MapBasic присваивает им начальное значение 0 (ноль). Строковые переменные неопределенной длины имеют начальное значение пустая строка (""). Строковые переменные фиксированной длины заполняются пробелами.
Объектным переменным и переменным типа Pen, Brush, Font и Symbol при объявлении не присваивается начальных значений. Перед использованием этих переменных Вы должны их инициализировать.
Пример:
' Создадим сложный тип данных Person,
'используя оператор Type Type Person
Name As String Age As Integer Phone As String
End Type
'Следующий оператор Dim объявляет переменную типа Person Dim customer As Person
'Этот оператор Dim объявляет массив переменных типа Person : Dim users(10) As Person
'Этот оператор Dim объявляет целочисленную переменную "counter"
'массив целочисленных переменных "counters" :
Dim counter, counters(10) As Integer
'Этот оператор присваивает элементу "Name" первого значения
'массива "users" следующее значение :
users(1).Name = "Поликарп"
Смотрите также:
Global, ReDim, Type, UBound( )
198 |
Справочник MapBasic |
Функция Distance( )
Функция Distance( )
Назначение:
Возвращает расстояние между двумя точками.
Синтаксис:
Distance(x1, y1, x2, y2, unit_name)
где
x1 и x2 – XLкоординаты (или широты);
y1 и y2 – YLкоординаты (или долготы);
unit_name – строка, задающая имя единицы измерения (например, "km")
Величина, полученная в результате:
Вещественное число. Величина типа Float
Описание:
Функция Distance( ) вычисляет расстояние между двумя определенными точками и возвращает значение в указанных единицах. Список всех возможных имен единиц измерения приведен в описании оператора Set Distance Units.
Координаты X и Y понимаются MapBasic относительно заданной системы координат. Если система координат не объявлялась, то используется система широта/долгота. Объявить систему координат можно оператором Set CoordSys.
Если текущей системой координат является система координат Земли, то функция Distance( ) возвращает расстояние между двумя точками по дуге большого земного сечения (большой окружности, полученной в результате сечения земного шара плоскостью, заданной этими двумя точками и центром Земного шара). Если текущая система координат – система координат для непроецированных карт (планов), функция Distance( ) возвращает расстояние в Декартовых координатах.
Пример:
Dim dist, start_x, start_y, end_x, end_y As Float Open Table "cities"
Fetch First From cities
start_x = CentroidX(cities.obj) start_y = CentroidY(cities.obj) Fetch Next From cities
end_x = CentroidX(cities.obj) end_y = CentroidY(cities.obj)
dist = Distance(start_x,start_y,end_x,end_y,"mi")
Смотрите также:
Area( ), ObjectLen( ), Set CoordSys, Set Distance Units
Справочник MapBasic |
199 |