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

Оператор If...Then

Оператор If...Then

Назначение:

Условное выполнение той или иной группы операторов.

Синтаксис:

If if_condition Then if_statement_list

[ ElseIf elseif_condition Then elseif_statement_list ]

[ ElseIf... ] [ Else

else_statement_list ]

End If

где

condition – выражение, результат которого есть логическая величина (TRUE или FALSE); statement_list – группа операторов, количество которых может быть нулевым.

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

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

Описание:

Оператор If... Then позволяет выбрать, какую группу операторов выполнить при удовлетворении определенных условий, задаваемых выражениями if_condition и elseif_condition.

Возможна простая форма оператора If, оператор без предложений ElseIf и Else...

If if_condition Then if_statement_list

End If

В этом случае вычисляется значение выражения if_condition. Если выражение равно логическому значению TRUE, то MapBasic выполнит операторы if_statement_list. Иначе MapBasic пропустит группу операторов statement_list и передаст управление программой следующему оператору после

End If.

Второй вариант формы If включает конструкцию Else:

If if_condition Then if_statement_list

Else

else_statement_list

End If

Здесь вычисляется значение выражения if_condition. Если выражение равно логическому значению TRUE, то MapBasic выполнит операторы if_statement_list и передаст управление программой следующему оператору после End If. Иначе MapBasic пропустит группу операторов statement_list и

выполнит else_statement_list.

Третий вариант формы If включает предложение ElseIf, и потом предложение Else (хотя это не обязательно):

If if_condition Then if_statement_list

ElseIf elseif_condition Then elseif_statement_list

262

Справочник MapBasic

Оператор If...Then

Else

else_statement_list

End If

В этом случае также сначала вычисляется значение выражения if_condition. Если выражение равно логическому значению TRUE, то MapBasic выполнит операторы if_statement_list и передаст управление программой следующему оператору после End If. Иначе MapBasic будет проверять выражения elseif_condition и, если оно истинно, выполняются операторы elseif_statement_list и управление программой передается следующему оператору после End If. Если выражение elseif_condition ложно, будут выполнены операторы, определенные конструкцией Else.

Оператор If может содержать несколько конструкций ElseIf, позволяющих Вам рассматривать любое количество возможных состояний. Но если Вы хотите, чтобы программа была написана в хорошем стиле, используйте оператор Do Case, а не оператор If с несколькими предложениями ElseIf.... .

Пример:

Проверим, не является ли сегодняшний день праздничным (Новый год, Рождество или Татьянин день), и выведем соответствующее поздравление. Если день не является праздником, будет выведено сообщение "Добрый день."

Dim today As Date

Dim today_mon, today_day, yearcount As Integer

today = CurDate( )

 

' чтение текущей даты

today_mon

= Month(today)

'

чтение

текущего

месяца

today_day

= Day(today)

'

чтение

текущего

числа (1 31)

If today_mon = 1 And today_day = 1 Then

Note "С Новым Годом!"

yearcount = yearcount + 1

ElseIf today_mon = 1 And today_day = 7 Then

Note "С Рождеством!"

ElseIf today_mon = 1 And today_day = 25 Then

Note "С днем ангела, Танечка!"

Else

Note "Добрый день."

End If

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

Do Case

Справочник MapBasic

263

Оператор Import

Оператор Import

Назначение:

Создает новую таблицу MapInfo из данных текстового файла.

Синтаксис (вариант 1 U для файлов формата MIF/MID, PICT и файлов MapInfoверсии DOS):

Import file_name [ Type file_type ] [ Into table_name ] [ Overwrite ]

Синтаксис 2 (для DXFUфайлов):

Import file_name

[ Type “DXF” ]

[ Into table_name ] [ Overwrite ]

[ Warnings { On | Off } ] [ Preserve

[ AttributeData ] [ Preserve ] [ Blocks As MultiPolygonRgns ] ] [ CoordSys . . . ]

[ Autoflip ]

[ Transform

(DXF_x1, DXF_y1 ) (DXF_x2, DXF_y2 ) (MI_x1, MI_y1 ) (MI_x2, MI_y2 ) ]

[ Read

[ Integer As Decimal ] [ Read ] [ Float As Decimal ] ] [ Store [ Handles ] [ Elevation ] [ VisibleOnly ] ]

[ Layer DXF_layer_name [ Into table_name ] [ Preserve

[ AttributeData ] [ Preserve ] [ Blocks As MultiPolygonRgns ] ]

]

[ Layer . . . ]

где

file_name – имя импортируемого файла, включая DOSLмаршрут;

file_type – формат импортируемого файла (MIF, MBI, MMI, DXF, IMG или PICT); new_table – имя результирующей таблицы, включая маршрут;

DXF_x1, DXF_y1 и т. п. численные величины, представляющие координаты в DXFLфайле; MI_x1, MI_y1 и т. п. численные величины, представляющие координаты в таблице MapInfo; DXF_layer_name – строковая величина, имя слоя в DXFLфайле.

Описание:

Оператор Import используется для создания новой таблицы MapInfo путем импорта данных из другого файла. Для создания таблиц MapInfo из таблиц других программ или из баз данных используйте оператор Register Table.

Параметр new_table из предложения Into задает имя файла для новой таблицы и расположение его на диске. Если предложение Into отсутствует в операторе, то таблица будет создана в каталоге оригинала и с таким же именем. Например, в среде Windows, если импортируемый файл называется WORLD.MIF, то новая таблица по умолчанию будет называться WORLD.TAB.

264

Справочник MapBasic

Оператор Import

Предложение Type может задавать формат файла, из которого импортируются данные. Параметр file type должен принимать одно из следующих строковых значений:

Предложение Type

Формат файла

Type ”DXF”

DXF (формат, поддерживаемый CADLпрограммами, такими как AutoL

 

CAD).

Type ”MIF”

MIF / MID (файлы в этом формате содаются экспортом таблицы MapL

 

Info).

Type ”PICT”

PICT (используется только в Macintosh).

Type ”MBI”

MapInfo Boundary Interchange (формат используется MapInfo версии

 

для DOS).

Type ”MMI”

MapInfo Map Interchange (формат используется MapInfo версии для

 

DOS).

Type ”IMG”

MapInfo Image file (формат используется MapInfo версии для DOS).

Если предложение Type в операторе не участвует, MapInfo пытается определить формат по расширению в имени файла. Например, имя “PARCELS.DXF” предполагает формат DXF.

Если таблица с заданным именем уже существует, MapInfo создаст таблицу, записав ее поверх старой, только когда в Import используется слово Overwrite. Если слово Overwrite опущено и таблица с заданным именем уже есть на диске, MapInfo не будет переписывать ее.

Режимы импорта файлов формата DXF

Для импорта данных из DXFLфайла, используется второй вариант синтаксиса оператора Import, который может включать нижеописанные специфические для формата DXF предложения и ключевые слова. Заметим, что следует обратить внимание на важность порядка следования предложений в операторе. Изменение этого порядка может привести к ошибке компилирования.

Warnings On или Warnings Off

Управляет показом предупреждающего диалогового окна, которое сопровождает операцию импорта. По умолчанию режим выключен.

Preserve AttributeData

Это предложение используется для импорта атрибутов из DXFLфайла.

Preserve Blocks As MultiPolygonRgns

Использование этого предложения приводит к тому, что MapInfo импортирует в сложные области (состоящие из нескольких полигонов) блоки формата DXF. Если предложение не используется, то каждый многоугольник DXF будет соответствовать полигону MapInfo.

CoordSys

Управляет проекцией и координатной системой таблицы. Предложение CoordSys детально описано в этом Справочнике отдельно.

Autoflip

Включает режим, при котором в результате импорта зеркально изменятся XLкоординаты относительно вертикальной оси симметрии, расположенной в середине Карты. Данный режим

Справочник MapBasic

265

Оператор Import

используется только с таблицами, имеющими проекцию плана.

Transform

Предложение задает координатное искажение. Вы задаете минимальные и максимальные координаты по оси X и Y в импортируемом файле и, соответствующие им, минимальные и максимальные координатные пары для будущей таблицы MapInfo.

Read Integer As Decimal

Переводит численные данные DXF целого типа в колонку таблицы десятичного (Decimal) типа. Это предложение используется только вместе с предложением Preserve AttributeData.

Read Float As Decimal

Переводит численные данные DXF с плавающей запятой в колонку таблицы десятичного (Decimal) типа. Это предложение используется только вместе с предложением Preserve AttributeData.

Store [ Handles ] [ Elevation ] [ VisibleOnly ]

Если используется ключевое слово Handles, то MapInfo помещает в колонку под именем “_DXFHandle” уникальные IDLномера графических объектов. Ключевое слово Elevation позволяет хранить в таблице MapInfo колонку со значениями высоты “_DXFElevation”. (Для линий MapInfo сохраняет высоту средней точки линии; для областей MapInfo сохраняет среднее значение высоты.) Если используется слово VisibleOnly, то MapInfo игнорирует невидимые объекты.

Layer ...

Если это предложение не используется, то все объекты из DXFLфайла будут импортированы в одну таблицу MapInfo. Если оператор включает одно или несколько предложений Layer, то тот DXFLслой, который будет Вами назван, импортируется в отдельную таблицу MapInfo.

Если DXFLфайл содержит несколько слоев и, если оператор Import содержит один или несколько предложений Layer, то MapInfo импортирует только те слои, которые будут названы параметром DXF_layer_name. Например, предполжим, что DXFLфайл содержит четыре слоя (слой 0, 1, 2 и 3). Следующий оператор Import импортирует все четыре слоя в одну таблицу MapInfo:

Import ”FLOORS.DXF”

Into ”FLOORS.TAB”

Preserve AttributeData

Следующий оператор импортирует только слои 1 и 3, но не импортирует слои 0 и 2:

Import ”FLOORS.DXF”

Layer ”1”

Into ”FLOOR_1.TAB”

Preserve AttributeData

Layer ”3”

Into ”FLOOR_3.TAB”

Preserve AttributeData

Пример:

Следущий пример импортирует файл формата MIF (MapInfo Interchange Format):

Import ”WORLD.MIF”

Type ”MIF”

Into ”world_2.tab”

Map From world_2

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

Export

266

Справочник MapBasic

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