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

Оператор Put

Оператор Put

Назначение:

Записывает в открытый файл содержимое переменной.

Синтаксис:

Put [#]filenum, [ position ] , var_name

где

filenum – номер открытого файла, присвоенный оператором Open File; position – позиция файла для записи (не для последовательного доступа);

var_name – имя переменной, значение которой будет использовано как данные для записи.

Описание:

Оператор Put позволяет записывать значение переменной в файл, открытый в режиме произвольного или бинарного доступа.

Если файл был открыт оператором Open File в режиме последовательного доступа (OUTPUT или APPEND), то для записи в файл используйте операторы Print # или Write #.

Если файл был открыт оператором Open File в режиме произвольного доступа (RANDOM), то параметр position задает номер записи, в которую будет записано новое значение. Сразу после открытия файла позиция для записи – это начало (первая запись) файла. Последовательное выполнение оператора Put автоматически наращивает это смещение, если при этом не переопределяется значение position.

Если файл был открыт оператором Open File в режиме бинарного доступа (BINARY), то одновременно можно записывать только одну переменную. Порядок, по которому байты записываются в файл, зависит от Вашей вычислительной платформы (см. также предложение Byte Order в описании оператора Open File). Количество записанных байтов зависит от типа переменной var_name. Например, записывая целое число, оператор Put внесет четыре байта. Переменные MapBasic записываются следующим образом:

Logical – однобайтовое значение, или 0, или другое ненулевое число.

SmallInt – двубайтовое значение, целое число.

Integer – четырехбайтовое значение, целое число.

Float – восьмибайтовое число в формате IEEE.

String – длина строки плюс один байт для нулевого значения, обозначающего конец строки.

Date – 4 байта: SmallInt для года, байт для месяца и байт для дня.

Другие типы – не записываются оператором Put.

параметр position задает смещение в файле в байтах. Сразу после открытия файла позиция для записи – это первый байт файла. Так же, как в предыдущем случае, последовательное выполнение оператора Put автоматически наращивает это смещение, с той разницей, что смещение происходит по байтам. При выполнении записи будет замещено столько байтов, сколько их в переменной, начиная с текущей позиции или заданной параметром position.

В файл, открытый в режиме BINARY, оператор Put не может записывать строки неопределенной длины; все переменные типа String должны иметь фиксированную длину. В файл, открытый в режиме RANDOM, оператор Put не может записывать строку, которая длиннее длины записи в файле.

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

EOF( ), Get, Open File, Print#, Write #

Справочник MapBasic

421

Оператор Randomize

Оператор Randomize

Назначение:

Инициализирует функцию случайных чисел в MapBasic.

Синтаксис:

Randomize [ With seed ]

где

seed – целочисленное выражение.

Описание:

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

Таким образом, оператор Randomize должен сработать один раз перед первым вызовом функции Rnd( ), чтобы направить процесс построения случайной последовательности в случайном направлении.

Если оператор Randomize используется с предложением With, то для создания начального случайного значения используется псевдослучайный генератор с входным значением seed. Если предложение With отсутствует, для построения начального случайного числа используется таймер Вашего компьютера.

Пример:

Randomize

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

Rnd( )

422

Справочник MapBasic

Функция ReadControlValue( )

Функция ReadControlValue( )

Назначение:

Читает текущую величину или состояние элемента активного диалога.

Синтаксис:

ReadControlValue(id_num)

где

id_num – целочисленный идентификатор элемента диалога.

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

Величина типа Integer, Logical, String, Pen, Brush, Symbol или Font. Тип величины зависит от вида элемента диалога.

Описание:

Функция ReadControlValue( ) возвращает текущее значение одного из элементов активного диалога. Так как функция может считывать значения только из открытого диалога, ее можно употреблять только в процедурах обработчика элементов диалога.

Параметр id_num должен задавать идентификатор элемента, значение которого прочитает функция. Значение идентификатора должно быть присвоено элементу диалога в предложении

ID в операторе Dialog. Если значение параметра будет равно 01 (минус единица), функция

ReadControlValue( ) вернет значение элемента, который на текущий момент был изменен последним. Чтобы точно указать, какой элемент диалога Вы хотите считать, установите в

ReadControlValue( ) индекс Integer ID с соответствующим значением. Внимание: управление диалогом не имеет уникального идентификатора ID пока Вы не включите предложение ID в

предложение Control оператора Dialog.

Некоторые типы элементов диалога имеют несчитываемые значения (например, статические текстовые подписи). Таблица ниже показывает возможные типы значений, которые будут возвращены различными элементами диалога. Обратите внимание, что для элемента

MultiListBox существует специальная процедура чтения текущего значения. Так как пользователь может одновременно выбрать сразу несколько строк в списке элемента

MultiListBox, то чтение значений этого элемента требует многократного вызова функции

ReadControlValue( ).

Элемент диалога: Результат функции ReadControlValue( )

EditText

Строка (тип String) длиной до 32767 байт, содержащая

 

текст из окошка; если окошко элемента многострочное, то

 

текст может содержать символы конца строки (код 10)

CheckBox

Логическое "Да" (TRUE), если флажок установлен, и

 

логическое "Нет" (FALSE), если сброшен

DocumentWindow

Целое, представляющее индекс HWND для управления

 

окном. Этот HWND должен быть передан как обработчик

 

"родительского" окна в оператор Set Next Document Parent

RadioGroup

Целое число (тип SmallInt), номер выбранной кнопки.

Справочник MapBasic

423

Функция ReadControlValue( )

PopupMenu

Целое число (тип SmallInt), номер выбранной строки в

 

списке меню.

ListBox

Целое число (тип SmallInt), номер выбранной строки в

 

списке (1 – первая строка, 0 – ни одной)

BrushPicker

Величина типа Brush

FontPicker

Величина типа Font

PenPicker

Величина типа Pen

SymbolPicker

Величина типа Symbol

MultiListBox

Целое число (тип Integer), номер выбранной строки в

 

списке.

 

Пользователь может выбрать одну или сразу несколько

 

строк в списке MultiListBox. Но функция

 

ReadControlValue( ) может возвращать только одну

 

величину за один вызов. Поэтому для чтения всех значений

 

необходимо функцию вызывать несколько раз.

 

Первый вызов функции дает номер первой строки,

 

выбранной в списке. Следующий – второй, и т. д. Когда все

 

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

 

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

 

списке ничего не выбрано.

Ошибки

В результате выполнения функции могут генерироваться следующие коды ошибок:

ERR_FCN_ARG_RANGE, если неправильно значение аргумента;

ERR_INVALID_READ_CONTROL, если функция ReadControlValue( ) вызвана не при

активном диалоге.

Пример

Создадим диалог, предлагающий пользователю ввести свое имя. Если после этого

пользователь нажал кнопку "ОК", будет выведено приветствие (Например, "Добро

пожаловать, Света!").

Declare Sub Main

Declare Sub okhandler

Sub Main

Dialog

Title ”Представьтесь, пожалуйста”

Control OKButton

 

Position 135, 120

Width 50

Title ”OK”

 

Calling okhandler

 

Control CancelButton

 

Position 135, 100

Width 50

Title ”Отмена”

 

Control StaticText

 

Position 5, 10

 

Title ”Введите ваше имя:”

Control EditText

 

Position 55, 10

Width 160

Value ”(имярек)”

 

424

Справочник MapBasic

Функция ReadControlValue( )

Id 23

’arbitrary ID number

End Sub

 

Sub okhandler

эта подпрограмма выполнится, если

была нажата кнопка "OK"

Note ”Добро пожаловать, ” + ReadControlValue(23) + ”!”

End Sub

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

Alter Control, Dialog, Dialog Preserve, Dialog Remove

Справочник MapBasic

425

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