- •Add Cartographic Frame
- •Оператор Alter Button
- •Оператор Alter ButtonPad
- •Оператор Alter MapInfoDialog
- •Оператор Alter Menu
- •Оператор Alter Menu Item
- •Оператор Alter Object
- •Оператор Alter Table
- •Оператор Autolabel
- •Оператор Beep
- •Оператор Browse
- •Предложение Brush
- •Оператор Call
- •Предложение CharSet
- •Функция ChooseProjection$()
- •Оператор Close All
- •Оператор Close File
- •Оператор Close Table
- •Оператор Close Window
- •Оператор Commit Table
- •Оператор Continue
- •Предложение Control CheckBox
- •Предложение Control EditText
- •Предложение Control GroupBox
- •Предложение Control RadioGroup
- •Оператор Create Arc
- •Оператор Create ButtonPad
- •Оператор Create ButtonPads As Default
- •Оператор Create Cartographic Legend
- •Оператор Create Collection
- •Оператор Create Ellipse
- •Оператор Create Frame
- •Оператор Create Grid
- •Оператор Create Index
- •Оператор Create Legend
- •Оператор Create Line
- •Оператор Create Map
- •Оператор Create Map3D
- •Оператор Create Menu
- •Оператор Create Menu Bar
- •Оператор Create MultiPoint
- •Оператор Create Point
- •Оператор Create PrismMap
- •Оператор Create Ranges
- •Оператор Create Rect
- •Оператор Create Redistricter
- •Оператор Create Region
- •Оператор Create Report From Table
- •Оператор Create RoundRect
- •Оператор Create Styles
- •Оператор Create Table
- •Оператор Create Text
- •Оператор 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
- •Процедура ForegroundTaskSwitchHandler
- •Функция FormatDate$
- •Оператор Function...End Function
- •Оператор Get
- •Оператор Graph
- •оператор Import
- •Оператор Include
- •Оператор Input #
- •Оператор Insert
- •Функция IsPenWidthPixels()
- •Оператор Kill
- •Оператор Line Input
- •Процедура Main
- •Оператор Map
- •Оператор Menu Bar
- •Оператор Metadata
- •Оператор Note
- •Оператор Objects Check
- •Оператор Objects Clean
- •Оператор Objects Combine
- •Оператор Objects Disaggregate
- •Оператор Objects Enclose
- •Оператор Objects Erase
- •Оператор Objects Intersect
- •Оператор Objects Overlay
- •Оператор Objects Snap
- •Оператор Objects Split
- •Оператор OnError
- •Оператор Open File
- •Оператор Open Table
- •Оператор Open Window
- •Предложение Pen
- •Функция PenPattern()
- •Функция PenWidthToPoints()
- •Функция PointsToPenWidth()
- •Оператор Print
- •Оператор PrintWin
- •Оператор ProgressBar
- •Оператор Put
- •Оператор Randomize
- •Оператор ReDim
- •Оператор Register Table
- •Оператор Reload Symbols
- •Процедура RemoteMapGenHandler
- •Процедура RemoteMsgHandler
- •Оператор Rename File
- •Оператор Rename Table
- •Оператор Reproject
- •Оператор Resume
- •Оператор Rollback
- •Оператор Run Application
- •Оператор Run Command
- •Оператор Run Menu Command
- •Оператор Run Program
- •Оператор Save File
- •Оператор Save Workspace
- •Оператор Seek
- •Процедура SelChangedHandler
- •Оператор Select
- •Оператор Server Begin Transaction
- •Оператор Server Bind Column
- •Оператор Server Close
- •Оператор Server Commit
- •Оператор Server Create Map
- •Оператор Server Create Table
- •Оператор Server Create Style
- •Оператор Server Disconnect
- •Оператор Server Fetch
- •Оператор 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 PrismMap
- •Оператор Set ProgressBars
- •Оператор Set Redistricter
- •Оператор Set Resolution
- •Оператор Set Shade
- •Оператор Set Table
- •Оператор Set Target
- •Оператор Set Window
- •Оператор Shade
- •Оператор StatusBar
- •Оператор Stop
- •Оператор Sub...End Sub
- •Предложение Symbol
- •Оператор Terminate Application
- •Функция Time()
- •Процедура ToolHandler
- •Оператор Type
- •Оператор UnDim
- •Оператор Unlink
- •Оператор Update
- •Оператор Update Window
- •Оператор While...Wend
- •Процедура WinChangedHandler
- •Процедура WinClosedHandler
- •Процедура WinFocusChangedHandler
- •Оператор Objects Move
- •Оператор Objects Offset
- •Функция Offset()
- •Функция SphericalOffset()
- •Функция SphericalOffsetXY()
- •Функция CartesianOffsetXY()
- •Функция LayerInfo( )
- •Оператор Register
- •Оператор Server Create Map
- •Функция TableInfo( )
Оператор OnError
Оператор OnError
Назначение:
Объявляет процедуру обработчика ошибок.
Синтаксис:
OnError Goto {label | 0 }
где
label – метка в тексте некоторой подпрограммы или функции.
Предупреждение:
Вы не можете использовать оператор OnError в окне MapBasic.
Описание:
Оператор OnError используется либо для запуска процедуры-обработчика ошибок, если ошибка имела место, либо для отмены обработки ошибок (форма OnError Goto 0). Процедура-обработчик ошибок представляет собой группу операторов, которые выполняются в случае ошибки.
В отличие от стандартных версий BASIC оператор OnError в MapBasic пишется в одно слово.
Оператор OnError Goto label объявляет, что операторы после метки label являются обработчиком ошибок, и, если один из операторов, следующих за OnError Goto label, вернет код ошибки, то MapBasic передаст выполнение программы метке label. Предполагается, что операторы должны обработать конфликтную ситуацию, возникшую в результате ошибки, так, чтобы она не повлияла на корректность выполнения программы, или предупредить пользователя о случившейся ошибке, или то и другое.
Заметим, что если Ваша программа имеет обработчик ошибок, то Вы должны перед оператором с меткой label расположить оператор управления выполнением программы (например, Exit Sub или End Program). Это не позволяет программе передать управление процедуре-обработчику без наличия ошибки. Смотрите пример ниже.
Оператор OnError Goto 0 отменяет установленный до этого обработчик ошибок. Если ошибка происходит в программе, где нет обработчика ошибок или он отменен, то MapBasic выводит на экран окно сообщения об ошибке и прекращает выполнение программы.
Операторы обработчика ошибок могут располагаться в отдельной процедуре или функции. Так, subпроцедуру обработчика ошибок можно определить следующим оператором:
OnError Goto recover
(при этом подразумевается, что в этой процедуре есть метка "recover"). Если после выполнения такого оператора OnError процедура выполнит оператор Call и перейдет в другую sub-процедуру, то обработчик с именем "recover" не будет способен реагировать на ошибку, пока действует другая процедура. Это происходит потому, что каждая метка локальна по отношению к процедуре и функции, в которой она задана. Этот прием позволяет каждой функции и каждой процедуре сопоставить собственный обработчик ошибок.
За ошибки, возникшие в процессе обработки других ошибок, отвечает Ваш программист на MapBasic.
Пример:
OnError GoTo no_states
Open Table "states"
Справочник MapBasic |
387 |
Оператор OnError
OnError GoTo no_cities
Open Table "cities"
Map From cities, states
after_mapfrom: OnError GoTo 0
'
' ...
'
End Program
no_states:
Note "Не может быть открыта таблица States...
окно Карты не будет открыто."
Resume after_mapfrom
no_cities:
Note "Данные о расположении городов недоступны..."
Map From states
Resume after_mapfrom
Смотрите также:
Err( ), Error, Error$( ), Resume
388 |
Справочник MapBasic |
Оператор Open File
Оператор Open File
Назначение:
Открывает файл для операций ввода/вывода.
Синтаксис:
Open File filespec
[ For { Input | Output | Append | Random | Binary } ] [ Access { Read | Write | Read Write } ]
As [#] filenum
[ Len = recordlength ]
[ ByteOrder { LOWHIGH | HIGHLOW } ] [ CharSet char_set ]
[ Filetype macfiletype ]
где
filespec – строка, содержащая имя файла;
filenum – целочисленный номер, который будет присвоен файлу вплоть до завершения работы с ним (используется в операторах Get и Put);
recordlength – число символов в одной записи (включая символ конца строки) для доступа к файлу в режиме Random;
char_set – определяет кодировку символов в файле;
macfiletype – тип файла, только для использования в операционной системе Macintosh (например, "MIwo").
Предупреждение:
Вы не можете использовать оператор Open File в окне MapBasic.
Описание:
Оператор Open File открывает текстовый файл для операций ввода/вывода прикладной программой. MapBasic может считывать данные из файла или записывать в него только после открытия файла. Для операций ввода/вывода используются операторы Get, Put, Input #, Print # и Write #.
В MapBasic различаются понятия "файл" и "таблица". Под таблицей понимается база данных MapInfo, данные которой можно показать в окнах Списка и Карты. MapBasic применяет одни команды к таблицам (например, Open Table, Fetch, Select), а другие команды к файлам, которые таблицами не являются.
Предложение For задает режим доступа к данным файла: режим последовательного доступа, режим произвольного доступа или режим бинарного доступа. Если предложения For нет в операторе, то для открытия файла используется режим произвольного доступа.
Файлы, открытые в режиме последовательного доступа
Если Вы собираетесь читать текст из файла, записи которого имеют разную длину (например, одна строка имеет 55 символов, а следующая – 72 и т. д.), то Вам надо использовать режим последовательного доступа. Для задания этого режима в предложении For используется ключевое слово Input, Output или Append.
Если использовано предложение For Input, то для чтения Вы можете использовать операторы Input #
и Line Input #.
Если использовано предложение For Output или предложение For Append, то для записи в файл Вы можете использовать операторы Print # и Write #.
Справочник MapBasic |
389 |
Оператор Open File
Если Вы используете предложение For Input, то в предложении Access Вы можете использовать только ключевое слово Read. Аналогично, с предложением For Output может использоваться в предложении Access только ключевое слово Write.
Предложение Len не должно использоваться в операторе, если задается режим последовательного доступа.
Файлы, открытые в режиме произвольного доступа
Если Вы собираетесь читать текст из файла, записи которого имеют одинаковую длину (например, каждая строка по 80 символов длиной), то Вы должны открыть файл в режиме произвольного доступа. Для задания этого режима в предложении For используется ключевое слово Random.
Для режима произвольного доступа необходимо задать длину записи в предложении Len = recordlength. Величина в параметре recordlength должна задать количество символов одной записи, включая символы конца записи, например, пара символов "возврат каретки" и "новая строка".
Для режима произвольного доступа в предложении Access Вы можете использовать все комбинации ключевых слов: Read, Write или Read Write. Для чтения из файла и записи в файл, открытый в режиме произвольного доступа, используются операторы Get и Put.
Файлы, открытые в режиме бинарного доступа
Если файл открыт в бинарном режиме, то MapBasic конвертирует величину переменной MapBasic в бинарную величину в случае записи и наоборот в случае чтения. Хранение численных данных в бинарном файле более компактно, чем хранение бинарных данных в текстовом файле. Но бинарный файл нельзя показывать и распечатывать как текстовый.
Для открытия файла в бинарном режиме используется предложение For Binary.
Для бинарного режима в предложении Access Вы можете использовать все комбинации ключевых слов: Read, Write или Read Write. Для чтения из файла и записи в файл, открытый в режиме бинарного доступа, используются операторы Get и Put.
Предложения Len и CharSet не должны использоваться в операторе, если задается режим бинарного доступа.
Управление порядком чтения байта
Предложение CharSet задает кодировку символов в файле. Параметр char_set должен быть строковой константой, такой как "MacRoman" или "WindowsLatin1". Если предложение CharSet опущено, то MapInfo будет использовать кодировку вычислительной платформы, в которой выполняется программа. Заметим, что предложение CharSet используется только в том случае, если файл открывается в режимах Input, Output, или Random. Читайте описание стандартного предложения CharSet для более подробной информации.
Если Вы открыли файл в режиме произвольного или бинарного доступа (Random или Binary), предложение ByteOrder задает, как число представлено в файле. В разных вычислительных платформах используется разный порядок байтов для представления данных: DOS-компьютеры использует порядок LOW HIGH (в порядке возрастания разрядов), в компьютерах Macintosh и в рабочих станциях UNIX бинарные данные хранятся в порядке HIGH LOW (в порядке убывания разрядов).
Если прикладная программа действует только в пределах одной вычислительной платформы, то Вам не надо беспокоиться о порядке разрядов байтов в файле. Но, если Вам необходимо читать из бинарного файла или писать в бинарный файл, который был создан или будет использоваться в
390 |
Справочник MapBasic |
Оператор Open File
другой платформе, то Вам придется контролировать порядок расположения байтов с помощью предложения ByteOrder.
Допустим, что Ваш файл был создан в операционной системе DOS и имеет порядок байтов LOW HIGH (этот порядок используется по умолчанию в DOS). Если Вы намереваетесь использовать этот файл в Macintosh, то Ваш оператор Open File должен включать в себя предложение ByteOrder LOWHIGH, иначе в Macintosh бинарный файл будет прочитан в порядке HIGH LOW.
Типы файлов системы Macintosh
В Macintosh, оператор Open File может включать предложение Filetype для задания типа файла в системе Macintosh. Каждый файл в Macintosh имеет тип, состоящий из четырех букв (например, "MIwo" для Рабочих Наборов), скрытый от пользователя и не зависимый от имени файла. Тип файла управляет представлением его в Macintosh Finder, поэтому судить о нем пользователь может только по иконке.
Предложение Filetype игнорируется всеми вычислительными платформами, за исключением Macintosh. Следующая таблица приводит некоторые четырехбуквенные последовательности, используемые для определения типа файла:
Значение. macfile8 |
Тип файла |
type |
|
|
|
"MIwo" |
Рабочий Набор MapInfo. |
"MIta" |
Таблица MapInfo. |
"MIap" |
Программа, написанная на MapBasic (откомпилированная). |
"TEXT" |
Текстовый файл (например, этот тип используется MapInfo для |
|
файла сокращений). |
"MIpr" |
Файл настройки MapInfo. |
"MIhe" |
Файл справочника MapInfo. |
"MIsy" |
Файл с символами и линиями MapInfo. |
"MIdb" |
База данных MapInfo (файлы, являющиеся компонентами таблицы: |
|
файлы с неграфическими данными, файлы с географическими |
|
данными, индексные файлы). |
Замечание: большие и маленькие буквы при задании типа различаются.
Примеры:
Open File |
"cxdata.txt" For |
INPUT As #1 |
|||
Open |
File |
"cydata.txt" |
For |
RANDOM |
As #2 Len=42 |
Open |
File |
"czdata.bin" |
For |
BINARY |
As #3 |
Смотрите также:
Close File, EOF( ), Get, Input #, Print #, Put, Open Table, Write #
Справочник MapBasic |
391 |
Оператор Open Report
Оператор Open Report
Назначение:
Загружает отчет в модуль Crystal Report Designer
Синтаксис:
Open Report reportfilespec
reportfilespec - это полный путь для существующего файла отчета.
Смотри также:
Create Report From Table
392 |
Справочник MapBasic |