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

Оператор ReDim

Оператор ReDim

Назначение:

Изменяет размерность массива.

Синтаксис:

ReDim var_name (newsize) [, ... ]

где

var_name – имя массива локальных или глобальных переменных; newsize – целое число, задающее новую размерность:

в16Lбитной версии Windows от 0 до 7000 включительно;

вMacintosh и 32Lбитных Windows от 0 до 32767 включительно.

Описание:

Оператор ReDim изменяет размерность (то есть количество элементов) одного или более уже объявленных массивов. Имя массива переменных, заданное в параметре var_name, должно быть до этого объявлено в операторе Dim или Global. Оператор ReDim не применим к переменным, которые не являются массивами.

Если параметр newsize, задающий новое значение размерности, не задан, то функция ReDim уменьшает размерность массива до нуля. Массив с нулевой размерностью занимает минимально возможное место в памяти.

Надо учитывать, что при изменении размерности массива все значения, присвоенные элементам массива, теряются.

В отличие от других BASICLязыков, MapBasic не позволяет задавать произвольный номер первого элемента массива. Другими словами, первый элемент массива в MapBasic всегда имеет номер 1 (единица).

Пример 1:

Dim names_list(10) As String, cur_size As Integer

'

'Следующий оператор считывает значение

'размерности массива, оператор ReDim увеличивает

'это значение на 10

'

cur_size = Ubound(names_list)

ReDim names_list(cur_size + 10)

'

'Следующий оператор ReDims обнуляет размерность

'нашего массива. Предположительно, этот массив больше

'не понадобится и обнуление его размерности

'сэкономит нам ресурсы памяти.

'

ReDim names_list(0)

Пример 2:

Оператор ReDim может применяться к массивам переменных сложного типа, составленным при помощи оператора Type, и к массивам, которые являются элементами переменных сложного типа.

394

Справочник MapBasic

Оператор ReDim

Type customer name As String

serial_nums(0) As Integer End Type

Dim new_customers(1) As customer

'

'Сначала увеличим размерность массива new_customers

'до пяти элементов

'

ReDim new_customers(5)

'

'Теперь изменим размерность массива serial_nums,

'который является элементом массива new_customers

ReDim new_customers(1).serial_nums(10)

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

Dim, Global, UBound( )

Справочник MapBasic

395

Оператор Register Table

Оператор Register Table

Назначение

Строит таблицу MapInfo из электронных таблиц, баз данных или текстовых файлов (но не из растровых изображений).

Оператор Register Table изменен путем включения типа “ACCESS” для регистрации таблиц Access.

Синтаксис

Register Table source_file

{Type “NATIVE” |

Type “DBF” [ Charset char_set ] |

Type “ASCII” [ Delimiter delim_char ] [ Titles ] [ CharSet char_set ] | Type “WKS” [ Titles ] [ Range range_name ] |

Type “XLS” [ Titles ] [ Range range_name ] |

Type “Access” Table table_name [ Password pwd ] [ CharSet char_set ] } [ Into destination_file ]

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

char_set is L название установленного шрифта; смотрите обсуждение оператора CharSet.

delim_char L знак разделителя между значениями полей таблицы (только для текстовых ASCIIL файлов). Если в файле используется Tab в качестве разделителя, укажите 9. Если используется запятая, укажите 44.

range_name L строка с именем области электронной таблицы (например, “MyTable”) или с ссылкой на ячейки (например, в Excel ячейки могут быть заданы как “Sheet1!R1C1:R9C6” или как “Sheet1!A1:F9”).

table_name L строка, определяющая имя таблицы Access.

pwd L пароль на уровне базы данных, определяемый при включении защиты базы данных.

destination_file L имя будущей таблицы MapInfo table (.TAB file). Строка может включать в себя путь, если же он не указан, то файл будет строиться в той же директории, где и исходный файл.

Описание

Перед тем, как использовать в MapInfo файлы “неродных” форматов (например, dBASE файл), Вы должны их зарегистрировать. Оператор Register Table приводит к тому, что MapInfo проверяет, может ли использоваться этот формат. Далее MapInfo заготавливает для него файлыLкомпоненты таблицы (filename.TAB, и др.). Как только оператор Register Table создаст файлыLкомпоненты, Вы можете открывать таблицу и редактировать ее данные в Списке или на Карте.

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

Замечание: Таблица не открывается автоматически. Для открытия таблицы надо использовать оператор Open Table.

Каждый файл данных должен быть зарегистрирован только раз. Так как при регистрации создаются файлыLкомпоненты, то при следующем сеансе работы MapInfo может просто открывать зарегистрированную ранее таблицу (оператор Open), а не регистрировать файл заново оператор Reg4 ister Table.

396

Справочник MapBasic

Оператор Register Table

Предложение Type задает формат, в котором был создан файл данных. За словом Type, может следовать одна из следующих строк: NATIVE, DBF, ASCII, WKS, XLS или Access.

Предложение CharSet является стандартным предложением и задает кодировку, в которой был создан файлLисточник, например, “MacRoman” или “WindowsLatin1”. Если этого предложения нет в операторе, MapBasic будет использовать текущую кодировку системы, в которой Вы работаете.

Предложение Delimiter задает знак разделителя между значениями полей для текстовых файлов. По умолчанию принимается символ табуляции. Предложение Titles определяет первую строку данных как названия полей в таблице MapInfo. Предложение Range определяет именованную область из исходного файла как базу данных (для электронных таблиц). Предложение Into задает в виде строки имя файла .TAB и расположение на диске. Если предложения в операторе нет, имя файла таблицы будет таким же, как имя файлаLисточника и располагаться он должен в том же каталоге. В случае, если для диска, на котором расположен файлLисточник, разрешено только чтение (например, CD– ROM), то файл таблицы будет сохранен гдеLто в другом месте, где запись разрешена.

Оператор Register Table не может быть использован для построения таблиц из файлов с растровым изображением (например, Photo.GIF). Чтобы из программы создать таблицу, основанную на растровом изображении (например, Photo.GIF), нужно использовать операторы ввода/вывода, такие, как Open File и Print #. Пример построения таблицы на основе растрового файла приводится в главе 7 Руководства пользователя MapBasic.

Регистрация таблиц Access

Когда Вы регистрируете таблицу Access, MapInfo проверяет колонку с уникальными индексами. Если уже существует такая колонка, MapInfo регистрирует ее в файле .TAB file. Эта колонка только для чтения.

Если в таблице Access нет такой колонки, MapInfo модифицирует таблицу Access добавляя к ней колонку с именем MAPINFO_ID с типом данных сounter. В этом случае, колонка тоже не отображается в MapInfo.

Предупреждение:Не пытайтесь ни каким способом изменять колонку счета. Это автоматически поддерживается только MapInfo.

Тип данных баз данных Access транслируется в закрытый тип данных MapInfo. Специальные типы данных Access, такие, как OLE объекты и бинарные поля, в MapInfo не редактируются.

Пример:

Register Table ”c:\mapinfo\data\rpt23.dbf”

Type ”DBF”

Into ”Report23”

Open Table ”c:\mapinfo\data\Report23”

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

Open Table, Create Table

Справочник MapBasic

397

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