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

Оператор Objects Split

Оператор Objects Split

Назначение:

Разделяет изменяемые объекты на части, используя форму выбранных объектов как "ластик". Оператор соответствует команде ОБ ЕКТЫ > РАЗРЕЗАТЬ.

Синтаксис:

Objects Split Into Target

[ Data column_name = expression ]

[ , column_name = expression ... ] ]

где

column_name – имя колонки в таблице.

Описание:

Оператор Objects Split разрезает каждый изменяемый объект на несколько. Оператор Objects Split соответствует команде MapInfo ОБ ЕКТЫ > РАЗРЕЗАТЬ. Если Вы в MapInfo выполните команду и при этом будет открыто окно MapBasic, то в протоколе выполненных действий будет использован оператор Objects Split. Описание выполняющейся операции смотрите в описании команды в

Справочнике MapInfo.

Перед выполнением оператора Objects Split, должен быть выбран изменяемый объект (или объекты) и один или более замкнутых объектов (типа "область ", "прямоугольник", "скругленный прямоугольник" или "эллипс"), играющих роль "ластика". Изменяемый объект может быть назначен командой в MapInfo ОБ ЕКТЫ > ВЫБРАТЬ ИЗМЕНЯЕМЫЙ ОБ ЕКТ или оператором Set Target из прикладной программы.

Предложение Data управляет обобщением данных. За ключевым словом Data должен следовать список определений через запятую. Каждое определение является выражением, по которому будет изменено значение из определенной колонки в записи изменяемого объекта. Вычисления или изменения должны производиться в соответствии с типом колонки (численным, строковым и т. п.) Следующая таблица приводит некоторые варианты определений для колонки:

Выражение

 

Эффект

col_name = col_name

 

Содержимое колонки не меняется. Каждый объект,

 

 

 

полученный в результате, в своей записи имеет то

 

 

же значение, что и объект, из которого он был

 

 

получен.

col_name = value

 

MapBasic помещает значение value в поле записи

 

 

объекта. Если тип колонки символьный, то value

 

 

должно быть строкой. Если тип колонки

 

 

численный, то value должно быть числом.

col_name = Proportion(col_name)

Используется только для численных колонок. MapBasic пропорционально размерам объектов разделяет значение в колонке col_name между записями с объектами, полученными в результате.

Список Data может состоять из определений для всех колонок таблицы. Если в списке определены не все колонки, то MapBasic разместит пустые значения в неописанные поля новой записи.

356

Справочник MapBasic

Оператор Objects Split

Если в операторе не используется предложение Data, то MapBasic заполнит все поля записи объектов нулевыми и пустыми значениями.

Примеры:

В результате следующего оператора Objects Split, который не использует предложение Data, все записи, к которым присоединены объекты, получают пустые или нулевые значения.

Objects Split Into Target

Следующий оператор Objects Split имеет предложение Data, которое задает выражения для трех колонок ("State_Name", "Pop_1990" и "Med_Inc_80"). Первая часть предложения Data присваивает строку "подразделение" колонке "State_Name"; то есть строка "подразделение" будет помещена в колонку "State_Name" для каждого объекта, являющегося результатом разрезания. Далее в предложении Data определяется, что население из колонки "Pop_1990" пропорционально разделяется между результатами разрезания, а значение "Med_Inc_80" сохраняется для всех объектов.

Objects Split Into Target

Data

State_Name = "подразделение",

Pop_1990 = Proportion( Pop_1990 ),

Med_Inc_80 = Med_Inc_80

Справочник MapBasic

357

Оператор OnError

Оператор OnError

Назначение:

Объявляет процедуру обработчика ошибок.

Синтаксис:

OnError Goto {label | 0 }

где

label – метка в тексте некоторой подпрограммы или функции.

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

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

Описание:

Оператор OnError используется либо для запуска процедурыLобработчика ошибок, если ошибка имела место, либо для отмены обработки ошибок (форма OnError Goto 0). ПроцедураLобработчик ошибок представляет собой группу операторов, которые выполняются в случае ошибки.

В отличие от стандартных версий BASIC оператор OnError в MapBasic пишется в одно слово.

Оператор OnError Goto label объявляет, что операторы после метки label являются обработчиком ошибок, и, если один из операторов, следующих за OnError Goto label, вернет код ошибки, то MapBaL sic передаст выполнение программы метке label. Предполагается, что операторы должны обработать конфликтную ситуацию, возникшую в результате ошибки, так, чтобы она не повлияла на корректность выполнения программы, или предупредить пользователя о случившейся ошибке, или то и другое.

Заметим, что если Ваша программа имеет обработчик ошибок, то Вы должны перед оператором с меткой label расположить оператор управления выполнением программы (например, Exit Sub или End Program). Это не позволяет программе передать управление процедуреLобработчику без наличия ошибки. Смотрите пример ниже.

Оператор OnError Goto 0 отменяет установленный до этого обработчик ошибок. Если ошибка происходит в программе, где нет обработчика ошибок или он отменен, то MapBasic выводит на экран окно сообщения об ошибке и прекращает выполнение программы.

Операторы обработчика ошибок могут располагаться в отдельной процедуре или функции. Так, subL процедуру обработчика ошибок можно определить следующим оператором:

OnError Goto recover

(при этом подразумевается, что в этой процедуре есть метка "recover"). Если после выполнения такого оператора OnError процедура выполнит оператор Call и перейдет в другую subLпроцедуру, то обработчик с именем "recover" не будет способен реагировать на ошибку, пока действует другая процедура. Это происходит потому, что каждая метка локальна по отношению к процедуре и функции, в которой она задана. Этот прием позволяет каждой функции и каждой процедуре сопоставить собственный обработчик ошибок.

За ошибки, возникшие в процессе обработки других ошибок, отвечает Ваш программист на MapBasic.

Пример:

OnError GoTo no_states

Open Table "states"

358

Справочник MapBasic

Оператор 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

Справочник MapBasic

359

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