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

Функция FormatDate$

Функция FormatDate$

Назначение:

Вазвращает дату в укороченном формате, в том стиле, который определен Панелью управления.

Синтаксис:

FormatDate$( value )

value L это число или строка, представляющие дату в формате YYYYMMDD.

Возвращаемое значение:

Строковая величина.

Описание:

Функция FormatDate$( ) возвращает строковую величину, представляющую дату с локальном системном формате, как определено в Панели управления.

Примеры:

Предположим, что настройки Панели управления это d/m/y для даты, ’L’ это разделитель для даты и ”ddLMMMLyyyy” L это укороченный формат даты:

Dim d_Today As Date

 

 

d_Today = CurDate()

 

 

Print d_Today

‘returns ”19970910”

Print FormatDate$(d_Today) ‘returns ”10 Sep 1997”

Dim s_EnteredDate As String

 

s_EnteredDate = ”03 02 61”

 

Print FormatDate$(s_EnteredDate)

‘returns ”03 Feb 1961”

s_EnteredDate = ”12 31 61”

 

Print FormatDate$( s_EnteredDate )‘ returns ERROR: not d/m/y ordering s_EnteredDate = ”31 12 61”

Print FormatDate$( s_EnteredDate )‘ returns ”31 Dec 1961”

Справочник MapBasic

247

Функция FormatNumber$( )

Функция FormatNumber$( )

Назначение:

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

Синтаксис:

FormatNumber$(num )

где num – численная или строковая величина, представляющее число, например, “1234.56”

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

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

Описание:

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

Примеры:

Следующая таблица демонстрирует, как работает функция FormatNumber$( ) в компьютере, в котором точка обозначает десятичную точку, а запятая – разделитель тысяч (стандартная установка в США):

Вызов функции

Результат

FormatNumber$(”12345.67”)

“12,345.67” (добавлен разделитель тысяч)

FormatNumber$(”12,345.67”)

“12,345.67” (без изменений)

Если в компьютере знак запятой зарезервирован за десятичной точкой, а точка разделяет тысячи, то функция будет работать так:

Вызов функции

Результат

FormatNumber$(”12345.67”)

“12.345,67” (добавлен разделитель тысяч и изменен

 

знак десятичной точки)

FormatNumber$(”12,345.67”)

“12.345,67” (изменены оба знака)

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

DeformatNumber$( )

248

Справочник MapBasic

Функция FrontWindow( )

Функция FrontWindow( )

Назначение:

Возвращает идентификатор активного окна.

Синтаксис:

FrontWindow( )

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

Целое число. Величина типа Integer.

Описание:

Функция FrontWindow( ) возвращает целочисленный идентификатор самого верхнего открытого окна в MapInfo. Этот оператор полезно применять сразу после создания нового окна (Карты, Графика, Списка или Отчета), чтобы запомнить значение идентификатора самого верхнего окна.

Пример:

Dim map_win_id As Integer

Open Table "states.tab" Map From states

map_win_id = FrontWindow( )

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

NumWindows( ), WindowID( ), WindowInfo( )

Справочник MapBasic

249

Оператор Function...End Function

Оператор Function...End Function

Назначение:

Объявляет внутреннюю функцию.

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

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

Синтаксис:

Function name ( [ [ ByVal ] parameter As datatype]

[, [ ByVal ] parameter As datatype ... ] ) As return_type

statement_list

End Function

где

name – имя функции;

parameter – имя параметра функции;

datatype – тип данных, стандартный в MapInfo, или тип, созданный при помощи оператора Type; return_type – скалярный тип данных, стандартный в MapInfo; массив или тип, созданный при помощи оператора Type не используется;

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

Описание:

Оператор Function позволяет Вам создавать свои функции. Сделанные таким образом функции являются внутренними и могут использоваться в программе, в которой находятся наравне со стандартными функциями MapInfo.

Каждое имя функции, созданной при помощи оператора Function, а также типы параметров и результата должны быть заранее объявлены в операторе Declare Function.

Внутренняя функция подобна процедуре, сделанной при помощи оператора Sub, но в отличие от процедуры функция возвращает значение, тип которого определяется параметром datatype, расположенным за последним ключевым словом As. Функция по сравнению с процедурой в применении более гибка, т.к. Вы можете составлять выражения, содержащие вызов к одной и более функциям. Например, следующее выражение содержит два вызова функции Proper$( ):

fullname = Proper$(firstname) + " " + Proper$(lastname)

В конструкции оператора Function... End Function параметр name, определяющий имя функции, трактуется как имя переменной. Этой переменной и присваивается значение, возвращаемое функцией. Если переменной name не было ничего присвоено, функция возвращает нулевое значение для числовых функций, FALSE для логических функций или нулевую строку ("") для строчных функций.

Ограничения при передаче параметров

Результат функции может быть только скалярным. Другими словами, функция не может возвращать массивы и данные сложных типов, созданных оператором Type.

По умолчанию, каждый параметр во внутреннюю функцию передается "ссылкой" ("byLreference"). Это означает, что оператор, вызывающий функцию, должен в качестве параметров использовать имена переменных. Если функция изменяет значение параметра, передаваемого ссылкой, то изменяется и переменная в вызывающей процедуре.

250

Справочник MapBasic

Оператор Function...End Function

Если перед именем параметра используется слово ByVal, то параметр передается значением ("byL value"). В этом случае оператор, вызывающий функцию, может использовать в качестве параметра выражение, а не имя переменной. Однако, если изменить значение такого параметра, новое значение нельзя будет вернуть в вызывающий модуль.

Вы не можете передавать в виде значения во внутреннюю функцию массивы, а также переменные, заданные оператором Type или объявленные предложением Alias. Такие переменные можно передавать только ссылкой.

Если функция не должна иметь параметров, то оператор Function... End Function может включать пустые скобки или не использовать их. То есть конструкция:

Function Foo( )

'

' ... здесь список операторов функции

'

End Function

идентична конструкции:

Function Foo

'

' ... здесь список операторов функции

'

End Function

Но при вызове этой функции использование скобок обязательно:

var_name = Foo( )

Доступность функций пользователя

Пользователь не может помещать вызовы к внутренним функциям выполняющейся прикладной программы при заполнении стандартных диалогов в MapInfo. Однако сама программа может это делать. Так, пользователь не может обратиться к определенной программой функции из диалога команды SQLLЗАПРОС, однако, в компилированной MapBasicLпрограмме может содержаться оператор Select, использующий эту функцию.

Внутреннюю функцию можно вызывать только в той программе, в которой она была определена. Поэтому, если Вы хотите использовать такую функцию в другой программе, то Вам придется полностью скопировать определение Function... End Function в текст другой программы.

Имена функций

Имя функции, определенное оператором Function, может совпадать с именем стандартной функции MapBasic, таким как Abs или Chr$. Подобная функция полностью замещает одноименную стандартную в пределах прикладной программы, в которой она определена. Например, если Вы создадите свою функцию Abs, то все вызовы функции Abs будут обращаться к Вашей функции, а не к стандартной функции MapBasic Abs( ).

Если произошло описанное переопределение, то на другие программы оно не действует. Поэтому, если Вы хотите переопределить какуюLлибо функцию для нескольких программ, то Вам придется переопределить ее в каждой программе.

Справочник MapBasic

251

Оператор Function...End Function

Пример:

В этом примере определяется функция пользователя под названием CubeRoot, которая вычисляет кубический корень из числа. Так как функция CubeRoot вызывается в тексте программы до определения самой функции, то в этом примере используется оператор Declare Function, определяющий аргумент функции и тип возвращаемого значения.

Declare Function CubeRoot(ByVal x As Float) As Float

Declare Sub Main

Sub Main

Dim result As Float

result = CubeRoot(23) Note Str$(result)

End Sub

Function CubeRoot(ByVal x As Float) As Float

CubeRoot = x ^ 0.33333333333

End Function

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

Declare Function, Declare Sub, Sub... End Sub

252

Справочник MapBasic

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