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

Оператор For...Next

Оператор For...Next

Назначение:

Выполняет последовательность действий в цикле с заданным числом итераций.

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

Оператор For... Next не может быть выполнен в окне MapBasic.

Синтаксис:

For var_name = start_expr To end_expr [ Step inc_expr ] statement_list

Next

где

var_name – имя переменной, выполняющей роль счетчика цикла; start_expr – численное выражение;

end_expr – численное выражение; inc_expr – численное выражение;

statement_list – группа операторов, выполняющихся за одну итерацию цикла.

Описание:

Оператор For... Next последовательно выполняет группу операторов заданное число раз. Управление циклом происходит при помощи целочисленной переменной var_name, выступающей в роли счетчика. Выражения start_expr, end_expr и inc_expr определяют, сколько раз будет выполнена группа операторов statement_list.

Оператор For присваивает счетчику значение, заданное выражением start_expr и первый раз выполняет группу операторов statement_list. Затем значение счетчика увеличивается на inc_expr, и операторы группы statement_list выполняются второй раз и так далее.

Если предложение Step inc_expr отсутствует в операторе, то счетчик увеличивается на одну единицу. Оператор For повторяет выполнение группы операторов до тех пор, пока значение счетчика меньше или равно end_expr. Как только var_name превысит значение выражения end_expr, цикл будет прекращен. Далее выполнение программы передается оператору, следующему за словом Next.

Если задать шаг отрицательным числом в предложении Step, то счетчик будет уменьшаться при выполнении цикла. В этом случае оператор For будет выполнять каждый шаг цикла до тех пор, пока var_name больше или равно end_expr.

Все операторы, которые находятся между операторами For и Next, являются операторами тела цикла statement_list и выполняются за одну итерацию (проход) цикла. Эти операторы образуют тело цикла. Для немедленного прекращения цикла, независимо от значения счетчика, используется оператор Exit For в теле цикла. Оператор Exit For просто передает управление программы следующему оператору после слова Next.

MapBasic позволяет Вам изменять величину переменной var_name в теле цикла и тем самым влиять на выполнение цикла. Но для соблюдения хорошего стиля программирования эту возможность использовать не рекомендуется.

Справочник MapBasic

241

Оператор For...Next

Пример:

Dim i As Integer

'Сообщение Note будет выдаваться пять раз For i = 1 to 5

Note "Добро пожаловать в MapInfo!" Next

'этот цикл выполнится за три шага

For i = 1 to 5 Step 2

Note "Добро пожаловать в MapInfo!"

Next

'Этот цикл выполнится за три шага

'(на первом шаге i будет равно 5, на втором

'i будет 3, на третьем шаге i равно 1)

For i = 5 to 1 Step 2

Note "Добро пожаловать в MapInfo!"

Next

' MapBasic не сможет выполнить следующий оператор For For i = 100 to 50 Step 5

Note "Это сообщение никогда не появится " Next

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

Exit For, Do While... Loop, Do... LoopWhile

242

Справочник MapBasic

Процедура ForegroundTaskSwitchHandler

Процедура ForegroundTaskSwitchHandler

Назначение:

Процедура, автоматически выполняющаяся при изменении фокуса окна программы MapInfo относительно других программ, выполняющихся в среде Windows.

Синтаксис:

Declare Sub ForegroundTaskSwitchHandler Sub ForegroundTaskSwitchHandler statement_list

End Sub

где

statement_list – список операторов процедуры.

Описание:

ForegroundTaskSwitchHandler – зарезервированное имя для процедуры MapBasic. Когда пользователь запускает программу, в которой есть такая процедура, программа не завершается после того, как выполнятся все операторы процедуры Main и другие процедуры, вызванные из нее. Программа будет находиться в режиме ожидания до тех пор, пока рабочее окно MapInfo не получит или потеряет фокус (т.е. сменится активность окна). Как только это произойдет, программа активизируется, выполняя процедуру с именем ForegroundTaskSwitchHandler. После выполнения процедуры программа вновь переходит в режим ожидания.

В процедуре WinChangedHandler может быть использована функция CommandInfo() для опеределения, преобретает ли MapInfo фокус или теряет его.

Пример:

Sub ForegroundTaskSwitchHandler

If CommandInfo(CMD_INFO_TASK_SWITCH)

=SWITCHING_INTO_MAPINFO Then

... когда активно окно MapInfo

Else

’ ... когда активно окно другой программы

End If

End Sub

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

CommandInfo( )

Справочник MapBasic

243

Функция Format$( )

Функция Format$( )

Назначение:

Возвращает строковое представление числа в заданном формате.

Синтаксис:

Format$(value, pattern)

где

value – численное выражение;

pattern – шаблонная строка, задающая формат.

Величина, полученная в результате:

Строка. Величина типа String.

Описание:

Функция Format$( ) преобразует число value в строковую величину, по шаблону, заданному параметром pattern. Например, число 12345.67 функция может преобразовать в строку “$12,345.67”.

Параметр pattern представляет собой строковый шаблон, по которому преобразуется число value. Он должен состоять из специальных символов, управляющих отображением числа в строке, таких как # , 0, %, запятая, точка, точка с запятой. Шаблон может также иметь косметические символы, такие как $, 4, (, ). Роль каждого из этих символов в формировании результирующей строки приведена в следующей таблице:

Символ в pattern

Какую роль играет для результата функции

#

Соответствует всем цифрам из value до десятичной точки и одной цифре

 

из value после десятичной точки. Если шаблон содержит один или более

 

символов # левее десятичного знака, а форматируемое число меньше

 

единицы, но больше нуля, то в результате ноль в целых частях не будет

 

отображен, строка будет начинаться с точки.

0

Применяется левее десятичной точки. Если управляющая строка

 

содержит один или более символов "0" левее десятичной точки и

 

значение числа меньше единицы и больше нуля, то результирующая

 

строка будет иметь ноль перед десятичной точкой.

. (точка)

Соответствует десятичной точке. Число символов # правее точки

 

определяет число десятичных разрядов, то есть сколько будет выведено

 

символов после десятичной точки. Результирующая строка будет

 

включать в себя тот десятичный разделитель, который установлен в

 

Вашей системе. Используя оператор Set Format можно добиться

 

назначить в качесстве десятичного разделителя точку, даже если в

 

системе принят другой знак.

244

Справочник MapBasic

 

Функция Format$( )

 

 

 

, (запятая)

Разделитель тысяч. Если управляющая строка содержит запятую перед

 

знаком решетки, определяющей целую часть числа, то в результате

 

каждые три цифры будут отделены запятой. Например, десять

 

миллионов будут показаны так: "10,000,000". Результирующая строка

 

будет включать в себя тот десятичный разделитель, который установлен

 

в Вашей системе. Используя оператор Set Format можно назначить в

 

качестве десятичного разделителя точку, даже если в системе принят

 

другой знак.

%

Процентное представление числа. Если управляющая строка содержит

 

знак процента, то результатом будет строка с числом, умноженным на

 

сто и знаком процента справа. Например, число 0.75 будет

 

преобразовано в строку "75%". Если Вы не намерены преобразовывать

 

число в проценты, но хотите иметь в строке знак %, используйте его в

 

комбинации со знаком \ (обратный слэш).

E+, e+

Представление числа в научном (экспоненциальном) формате.

 

Например, число 1234 будет преобразовано в строку "1.234e+03". Если

 

экспонента положительна, то после символа "e" будет помещен плюс.

 

Если экспонента отрицательна, после символа "e" будет помещен знак

 

минус.

E–, e–

Представление числа в научном (экспоненциальном) формате. От

 

предыдущего отличается тем, что в случае положительной экспоненты

 

знак плюс не отображается.

; (точка с запятой)

Знаком "точка с запятой" Вы разделяете в одной управляющей строке

 

два шаблона для положительного и отрицательного значения. Так, в

 

управляющей строке сначала определяется формат для представления

 

положительных значений числа, потом через точку с запятой задается

 

другой формат для отрицательных значений.

 

Если Вы задаете управляющую строку таким образом, то знак минус уже

 

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

 

необходимо иметь знак минус, включите "L" в формат для

 

отрицательных значений.

\

Разрешает включение текстового символа. Если обратный слэш стоит

 

перед специальным символом (например, перед %), то MapBasic будет

 

рассматривать этот символ в шаблоне как текстовый символ.

Ошибки:

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

Примеры:

Следующие примеры показывают, какие результаты получаются при применении различных строковых шаблонов. Результаты показаны в комментариях. Внимание: в локализованных системах Вы можете получить те же результаты, но немного в другом виде.

Format$(

12345, ",#")

' возвращает

"12,345"

Format$( 12345, ",#")

' возвращает

" 12,345"

Format$(

12345, "$#")

'

возвращает

"$12345"

Format$( 12345, "$#")

'

возвращает "$12345"

Справочник MapBasic

 

 

245

Функция Format$( )

Format$(

12345.678,

"$,#.##")

' возвращает "$12,345.68"

Format$( 12345.678,

"$,#.##")

' возвращает "$12,345.68"

Format$(

12345.678,

"$,#.##;($,#.##)")

'

возвращает

"$12,345.68"

Format$( 12345.678,

"$,#.##;($,#.##)")

'

возвращает

"($12,345.68)"

Format$( 12345.6789,

",#.###")

' возвращает "12,345.679"

Format$( 12345.6789,

",#.#")

' возвращает "12,345.7"

Format$( 12345.6789,

"#.###E+##")

' возвращает " 1.235e+04"

Format$( 0.054321,

"#.###E+##")

' возвращает "5.432e 02"

Format$( 12345.6789,

"#.###E ##")

' возвращает " 1.235e04"

Format$( 0.054321, "#.###E ##")

' возвращает "5.432e 02"

Format$( 0.054321, "#.##%")

' возвращает "5.43%"

Format$( 0.054321, "#.##\%")

' возвращает ".05%"

Format$( 0.054321, "0.##\%")

' возвращает "0.05%"

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

Str$( )

246

Справочник MapBasic

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