Операторы языка mapbasic

Возможности программы

Итак, что же имеет в своем арсенале DiaBuilder?

  • полный визуальный контроль над созданием ваших диалогов MapBasic;
  • настройка размеров, положения, выравнивания, доступности, заголовков, пароля и доступности элемента, а также значений, переменных и вызовов (value, into, calling);
  • одновременное перемещение и настройка группы контролов;
  • автоматическое создание имен переменных и идентификаторов контролов;
  • полноценное использование системных переменных;
  • автоматическое создание блоков подпрограмм – остается только добавить ваш код;
  • встроенный редактор кода с цветной подсветкой синтаксиса;
  • сохранение и загрузка проектов для последующих изменений;
  • предпросмотр сформированных диалогов;
  • компиляция и запуск программы (требуется установленный MapBasic).

Что добавляет прелести программе – так это ее полная портабельность (portable). DiaBuilder, хотя и имеет файл инсталляции, переносится на другой компьютер простым копированием и не оставляет следов в реестре.

Интерфейс программы английский и, к сожалению, возможность русификации автором не предусмотрена. С другой стороны, продуманность и интуитивная понятность меню и диалогов DiaBuilder позволяют беспроблемно освоить программу любому, мало-мальски знакомому с основами языка, человеку.

Пример использования DiaBuilder 2000 – создание диалога

При первом запуске программа создаст файл настроек diabuilder.ini, на что, возможно, потребуется некоторое время. После полной загрузки, интерфейс DiaBuilder будет представлен двумя окнами: панелью инструментов и начальной формой диалога. На панели инструментов находятся 4 вкладками:

  1. Controls – элементы управления;
  2. Alignment – выравнивание и расстановка элементов;
  3. Options – опции и настройки программы;
  4. File – управление файлами проекта.

Учитывая, что программа не всегда находит путь к папке компилятора MapBasic, стоит проверить настройки путей (меню «Options» → «Settings»).

После проверки и окончательной настройки программы можно перейти к созданию нашего первого диалога. Это будет утилита, которая выбирает из открытой таблицы все объекты одного типа (полигоны, символы, текст, etc.) Подробно вопрос выбора однотипных объектов средствами самой MapInfo подробно рассматривался в .

Перейдя на вкладку «Controls», выберем элемент управления Radio Group. Простым щелчком мыши на свободном поле формы добавим этот элемент. Правый клик откроет дополнительное окно – редактор свойств элементов. Должна получиться примерно такая картина:

Активировав щелчком по полю Title в окне редактора свойств диалог ввода подписей элемента, заполним его сообразно примеру. Значение свойства UserID – Radio1ID запомним или запишем в сторонке, так как оно нам потребуется для обращения к этому элементу впоследствии.

Таким же, как описанный выше, способом, добавим на форму и настроим элементы StaticText и 2 командные кнопки: OK Button и Cancel Button.

Выделив на форме элемент OK Button, в Редакторе Свойств активизируем свойство Calling. Откроется встроенный редактор кода, в который можно сразу же, не заботясь ни об объявлении констант, ни об определениях, ни даже об объявлении процедуры (Sub … End Sub), сразу же писать код.

Вот код, который позволит выбрать все объекты одного типа в первой открытой таблице.

Для начала делаем проверку на наличие открытых таблиц:

If Numtables( ) < 1 Then
End Program
End If

Затем объявляем внутреннюю переменную и записываем в нее строку в зависимости от выбранной пользователем опции Radio Group (вызов свойств контрола по UserID):

Dim sQuery as String
Do Case ReadControlValue(Radio1ID)
Case 1
sQuery = «line»
Case 2
sQuery = «polyline»
Case 3
sQuery = «region»
Case 4
sQuery = «text»
Case 5
sQuery = «point»
Case 6
sQuery = «rect»
Case 7
sQuery = «roundrect»
Case 8
sQuery = «ellipse»
Case 9
sQuery = «arc»
End Case

И, наконец, составляем запрос и запускаем команду на выполнение:

Run Command «Select * From » & TableInfo(1,TAB_INFO_NAME) & » Where Str$(obj)=»»» & sQuery & «»» Into Selection»

Все! Программа готова. Переходим на вкладку «File» панели инструментов, выбираем опцию «Test», ждем …

Готово. Программа создана, скомпилирована и ей можно пользоваться. На все операции у меня ушло не более 5 минут.

Загрузить готовый проект рассмотренного примера (2,97 KB)Загрузить скомпилированную утилиту (1,54 KB)

Описание операторов языка MapBasic для производства выборок данных в таблицах MapInfo

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

Символьные строки
Символьные константы в выражении заключаются в кавычки. Если строка не заключена в кавычки, то MapInfo Professional будет воспринимать её как имя поля (колонки). Например, строки 1 и 2 – константы, а строки 3 и 4 – нет:

  1. «Красное»
  2. «Красноярск»
  3. Красное
  4. New York

Числа в выражениях
Для задания чисел в выражениях не используйте запятую, знак доллара и другие знаки, не являющиеся цифрами, точкой и знаком минус для отрицательных чисел. Для задания числовых величин в экспоненциальном виде может также использоваться символ E.

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

Для описания операторов и функций MapBasic, используемых в диалогах выборок, воспользуемся справочными данными языка и немного перегруппируем списки команд.

Обзор DiaBuilder 2000

Любой программист, пишущий приложения под MapInfo Professional, рано или поздно приходит в отчаянье от выполнения одной, весьма тягомотной, обязанности. А именно – от создания диалоговых окон на языке MapBasic. Эта рутинная кропотливая работа отъедает значительный кусок и времени, и программного кода.

Но. Вопрос создания диалогов MapBasic давно решен! Работая в свое свободное время, после долгих, жарких дней установки системы E911 в южном Техасе, бизнесмен и программист Трей Паттильо (Trey Pattillo) выпустил в 2000 году свой редактор диалогов для MapBasic – DiaBuilder 2000. Особенно приятен тот факт, что программа, изначально выпущенная как коммерческий продукт, с 2009 года стала полностью freeware, т.е. бесплатной.

DiaBuilder полностью поддерживает все пятнадцать элементов управления MapBasic и все их свойства, а также соблюдает все ограничения диалогов MapBasic. Операции просты и понятны: что вы видите, то и получаете. Контролы выбираются на панели инструментов и помещаются на форму простым нажатием мыши. Размеры и положения элементов можно изменять, а правый клик мыши вызывает меню «Свойства», в котором можно задать все параметры в точности.

Также DiaBuilder имеет развитые средства выравнивания элементов диалога. Можно выровнять контрол по отношению к другим по центру, расставить по сетке или распределить равномерно. Можно задавать последовательность обхода элементов и еще многое другое, не менее полезное и приятное.

Никто не любит возиться с настройками, но DiaBuilder позволяет настроить все, от шага и цвета сетки и размеров элементов по умолчанию, до папок размещения проектов и файлов компилятора, так что пренебрегать этой возможностью программы не стоит.

За несколько минут вы можете создать красивый и качественный диалог MapBasic и сразу же увидеть, как он будет выглядеть. Разрабатывая программу через интерфейс DiaBuilder, вы не только создаете форму диалога, но и файлы переменных и объявлений, настраиваете управление идентификаторами и структуру кода подпрограмм. В процессе разработки можно включать в код свои модули, добавлять различные файлы, не заботясь об объявлении их в коде.

Загрузка программы

Как уже упоминалось выше, с 2009 года автор, Трей Паттильо, сделал программу бесплатной (против 40$ ранее). Теперь DiaBuilder 2000 можно абсолютно свободно, без оплаты и регистрации загрузить на сайте автора.
Также программу в виде ZIP-архива (исполняемые файлы и справочная система) можно загрузить на сайте

Помимо редактора диалогов DiaBuilder 2000 Трей Паттильо написал великолепный редактор языка MapBasic – MB Coder, с полноценной подсветкой синтаксиса языка, подсказками, деревом проекта и многими другими, важными и нужными разработчику функциями. Более полная информация о редакторе представлена в .

Официальные издания

Руководство пользователя MapBasic

Esti-Map

Русское издание

2008-2011 Pitney Bowes Software Inc.
1992–2006 MapInfo Corporation.
2000-2006 ООО «ЭСТИ МЭП». Русский перевод Владимир Журавлёв, Алексей Колотов, Камиль Мусин, Всеволод Николаев, Ольга Зислис.

Предыдущие версии…

  • Руководство пользователя MapBasic 9.0 (2,66 MB)
  • Руководство пользователя MapBasic 8.5 (1,00 MB)
  • Руководство пользователя MapBasic 8.0 (2,01 MB)
  • Руководство пользователя MapBasic 7.0 (1,55 MB)
  • Руководство пользователя MapBasic 6.5 (1,18 MB)
  • Руководство пользователя MapBasic 6.0 (1,42 MB)

Справочник MapBasic

Esti-Map

Русское издание

2008-2011 Pitney Bowes Software Inc.
2006 MapInfo Corporation.
2006 ООО «ЭСТИ МАП». Русский перевод Владимир Журавлёв, Алексей Колотов, Камиль Мусин, Всеволод Николаев, Ольга Зислис.

Предыдущие версии…

  • Справочник MapBasic 9.0 (4,60 MB)
  • Справочник MapBasic 8.5 (4,34 MB)
  • Справочник MapBasic 8.0 (3,27 MB)
  • Справочник MapBasic 7.8 (3,94 MB)
  • Справочник MapBasic 7.5 (2,17 MB)
  • Справочник MapBasic 7.0 (1,96 MB)
  • Справочник MapBasic 6.5 (2,62 MB)
  • Справочник MapBasic 6.0 (2,82 MB)

Географические операторы в выражениях

В MapInfo Professional имеется несколько географических операторов. Они используются для выбора объектов на основании их взаимного расположения в пространстве. С географическими операторами в MapInfo Professional используется специальное зарезервированное слово: «obj» или «object». Оно определяет, что MapInfo Professional должно вычислить значение на основании графических объектов, а не соответствующих им табличных данных.

Имя географического оператора указывается между географическими объектами. Выбрать его можно в списке «Операторы» в диалоге «SQL-запрос». Здесь перечислены географические операторы:

Contains Объект A содержит объект В, если центроид объекта В лежит в границах объекта A.
Contains Entire Объект A полностью содержит объект В, если границы объекта В полностью лежат внутри границ объекта A.
Within Объект A находится внутри объекта В, если его центроид находится в границах объекта В.
Entirely Within Объект A находится полностью внутри объекта В, если его граница полностью находится внутри границ объекта В.
Intersects Объект A пересекается с объектом В, если они имеют хотя бы одну общую точку.

«Contains» и «Within» имеют дело с центроидами.

«Contains Entire» и «Entirely Within» имеют дело с границами и не затрагивают центроиды.

Также, полилинии не могут содержать (contain) точку, но они могут пересекать (intersect) точку; точка не может быть внутри (within) полилинии, но может пересекать (intersect) полилинию.

Примечание: При этом следует помнить, что MapInfo Professional выполняет простые операции «Содержит» (Contains) и «Внутри» (Within) гораздо быстрее, чем «Содержит полностью» (Contains Entire) и Полностью внутри (Entirely Within). Поэтому, если Вам не обязательно точно знать, полностью ли один объект содержит другой, используйте Contains и Within вместо Contains Entire и Entirely Within.

Оригинал:Геостатьи

Использование операторов сравнения в выражениях

Операторы Описание
= «равенство»
<> «неравенство»
> «больше»
< «меньше»
>= «больше или равно»
<= «меньше или равно»

Сравнение чисел
Численное сравнение основано на численных значениях выражений и численных констант.

Пример: выбрать все строки, в которых доход больше $65,000:

HH_INC > 65000

Комментарий: Не добавляйте знак доллара или запятую. MapInfo Professional не знает что делать с этим и Вы получите сообщение об ошибке.

Пример: покажите все районы, где средний возраст населения составляет 42 года:

MED_AGE = 42

Комментарий: Это выражение выбирает только те записи, где средний возраст ровно 42 года. Когда колонка со средним возрастом содержит десятичную точку (как в случае демографических данных поставляемых в комплекте с MapInfo Professional), то маловероятно, что найдётся много регионов, где средний возраст будет равен ровно 42.

Следующее выражение даёт лучший результат:

Round(MED_AGE, 1) = 42

Комментарий: Функция «round (любое число, любое число)» округляет первое число, с точностью до второго числа. В этом примере первое число это средний возраст (MED_AGE), а второе это 1, указывающее что средний возраст должен быть округлён до ближайшего целого числа.

Пример: Все строки, где значение не равно $23,000.

AMOUNT <> 23000

Комментарий: Вы можете использовать функцию Round, с параметром округления 10, если не преследуете цель получить значение, точно равное 23000.

Сравнение строк.

Сравнение строк основано на точном соответствии символов содержащихся в строке. В случае «>» это обозначает «дальше в алфавите» и «<» обозначает «раньше в алфавите».

Когда вводите строку в выражении заключайте её в кавычки, для того чтобы MapInfo Professional рассматривало её как строку, а не как название колонки.

Пример: Все строки, где продавец Acme.

VENDOR = «Acme»

Комментарий: обратите внимание, что строка Acme заключена в кавычки, для того чтобы MapInfo Professional рассматривало её как символьную строку, а не искало колонку с названием Acme.

Пример: Все строки, где продавец не Acme.

VENDOR = «<>»

Сравнение дат.

Пример: Все сообщения принятые 9 октября, 1991.

RECEIVED = «10-9-91»

Примечание: Имейте ввиду:

  • Дата заключается в кавычки;
  • Дата записывается в форме: месяц, день, год;
  • Числа в дате разделяются дефисом или косой чертой (/);
  • Для года было использовано два символа. Но можно использовать и четыре символа (1991).

Пример: Все сообщения принятые после 9 октября, 1991.

RECEIVED > «10-9-91»

Комментарий: Это выражение не выберет записи с сообщениями принятыми 9 октября, 1991. Если Вы хотите чтобы были выбраны и они:

RECEIVED > = «10-9-91»

Пример: Записи с сообщениями принятыми до Августа.

Month(RECEIVED) < 8

Комментарий: Это выражение использует функцию Month чтобы извлечь месяц из даты. Конкретный год не указывается

Если база данных содержит записи за несколько лет, это выражение не будет принимать во внимание год.

Логическое сравнение.

Пример: Всё что продано.

Shipped

Комментарий: Колонка «Shipped» – логическая. Она содержит «T» если значение истинное, в противном случае «F» – ложное. Когда товар продан, он помечается «T». В противном случае он не продан. Для проданных товаров выражение из примера ищет значение истина. Для непроданных – значение ложь.

Пример: Всё что не продано.

Str$(Shipped) = «F»
Not Shipped

Статьи и обзоры

Геостатьи «KARASOFT Design»

Андрей Е. Карасов

В цикле статей рассматриваются некоторые «секреты», благодаря которым рядовые пользователи смогут построить свою работу более эффективно. Для начала разбираются основы строения таблиц MapInfo, как основных источников данных. Затем – язык программирования MapBasic в части возможного применения некоторых его операторов и функций в стандартных окнах запросов и изменения содержимого семантических полей в MapInfo:

  1. Таблицы MapInfo Professional. Строение. Типы данных.
  2. Использование языка MapBasic в выборках MapInfo Professional.
  3. Операторы языка MapBasic для условий выборок в MapInfo Professional.
  4. Функции языка MapBasic для условий выборок в MapInfo Professional.

Загрузить (503 KB)

Просто и ясно о MapInfo и Delphi

Дмитрий Кузан

Хорошо известный цикл из 3 статей, опубликованных в 2002 году на сайте «Королевство Дельфи». Статьи посвящены Интегрированной Картографии MapInfo и возможности встраивания ГИС в пользовательскую программу. Языком разработки, что естественно, выбран Delphi.

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

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

Загрузить (329 KB)

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: