Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MB6REFRU.pdf
Скачиваний:
10
Добавлен:
13.02.2015
Размер:
3.83 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), то одновременно можно записывать только одну переменную. Порядок, по которому байты записываются в файл, зависит от Вашей вычислительной платформы (см. также предложение Byte4 Order в описании оператора Open File). Количество записанных байтов зависит от типа переменной var_name. Например, записывая целое число, оператор Put внесет четыре байта. Переменные MapBaL sic записываются следующим образом:

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

389

Оператор Randomize

Оператор Randomize

Назначение:

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

Синтаксис:

Randomize [ With seed ]

где

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

Описание:

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

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

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

Пример:

Randomize

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

Rnd( )

390

Справочник MapBasic

Функция ReadControlValue( )

Функция ReadControlValue( )

Назначение:

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

Синтаксис:

ReadControlValue(id_num)

где

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

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

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

Описание:

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

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

вернет значение элемента, который на текущий момент был изменен последним.

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

Справочник MapBasic

391

Функция ReadControlValue( )

Элемент диалога

 

Результат функции ReadControlValue( )

EditText

 

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

 

 

 

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

 

 

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

CheckBox

 

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

 

 

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

RadioGroup

 

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

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 okhandler

Dialog

 

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

 

Control OkButton

 

Position 135, 120

 

Width 50

 

Title "OK"

 

Calling okhandler

392

Справочник MapBasic

Функция ReadControlValue( )

Control CancelButton

Position 135, 100

Width 50

Title "Отмена"

Control StaticText

Position 5, 10

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

Control EditText

Position 55, 10

Width 160

Value "(имярек)"

Id 23

End Program

Sub okhandler

'

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

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

'

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

End Sub

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

Alter Control, Dialog, Dialog Preserve, Dialog Remove

Справочник MapBasic

393

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