Ребята помогите взять "lvl up" по MapBasic

MapInfo, MapBasic
Аватара пользователя
Parlament
Интересующийся
Сообщения: 30
Зарегистрирован: 11 сен 2008, 14:51
Репутация: 0
Контактная информация:

Ребята помогите взять "lvl up" по MapBasic

Сообщение Parlament » 11 сен 2008, 15:02

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

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

Calling { procedure | menu_code | OLE methodname | DDE server , topic }

Параметры тут явно не указаны..

Судь всей картины такова мне надо чтобы по нажатию кнопочки... вываливался прогресс бар и информационная консоль и они одновремено работали... почему именно так? все просто мне не удалось запихнуть в прогресс бар постоянно меняющуюся строку =(...
В С++ как то по проще там потоки есть... а тут как то все не очень красиво... =)))


Вопрос 2-й;:
У меня есть диалоговое окно.. в нем есть listbox в него я пытаюсь запихнуть список открытых карт.. но почему то у меня совсем не получается это сделать... Как мне обновить Диалог? что бы увидеть надпись которую я запихнул в listBox... и как ее потом от туда... удалить?

Помогите... или я просто не правильно мыслю... ?
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Ребята помогите взять "lvl up" по MapBasic

Сообщение Boris » 12 сен 2008, 03:44

Дорогой друг,
огорчу вас сразу же. Ответ на свои вопросы вы уже дали.
Вы именно неправильно мыслите. Основная ошибка - это считать MapBasic' языком разработки диалоговых приложений.
MapBasic - это язык несложных приложений, выполняющих команды MapInfo любой сложности.
Если не хотите достичь белого каления - не пытайтесь бороться с интерфейсом MapInfo. Все команды и методы общения созданы 8-10 лет назад. Надеяться на их дружелюбность или адекватность - бессмыслено. Если тчо-то не заработало, то надо посмотреть Help.
Все параметры команд описаны в Help'е. Причем местами лучше чем любой другой документации. Не понятно как делать или результат отличается от описанного - ищите обходные пути.
вот пример оттуда:
ProgressBar "Writing data..." Calling write_out Range 600
"Writing data..." - текст сообщения,
write_out - имя вызываемой функции, ей полностью передается управление
600 - кол-во условных единиц в ProgressBar
дальнейшие изменения
ProgressBar = next_row


Если вам не удается получить доступ к окну Info в этот момент, то этому может быть самое простое объяснение - оно реализовано как минипрограмма на MapBasic'е и в это время не получает управления. Все виденные мною программы писали командой
Print message - текст в окно Message
Ну, это все детали. ОТВЕТ общий один - не связывайтесь с MapBasic'ом при проектировании интерфейса. Все нормальные люди сложный интерфейс пишут отдельно и выводят его в виде вызываемой DLL-функции. Результат потом забирают и используют опять в MapBasic'е.
НО если хотите приключений - то вот как обновляют все окна диалога
Alter Control id_num
[ Title { title | From Variable array_name } ]

Аватара пользователя
Parlament
Интересующийся
Сообщения: 30
Зарегистрирован: 11 сен 2008, 14:51
Репутация: 0
Контактная информация:

Re: Ребята помогите взять "lvl up" по MapBasic

Сообщение Parlament » 12 сен 2008, 17:45

>MapBasic - это язык несложных приложений, выполняющих команды MapInfo любой сложности.
Если не хотите достичь белого каления - не пытайтесь бороться с интерфейсом MapInfo. Все команды и методы общения созданы 8-10 лет назад. Надеяться на их дружелюбность или адекватность - бессмыслено.

--- А разве есть разница.. когда было создано приложение? Вот вам яркий пример... Gis Tool 1995 итого.. м.. 13 лет.. Но да же сейчас работая с одной из старых версий годов так 98.. с ней проблем нет.. И если они дают возможность работы с диалогами.. то там учитывают работу со всем что может предложить С++.. кстати разработана она российскими программистами..

> Надеяться на их дружелюбность или адекватность - бессмыслено.

--- можно все.. главное абстрагироваться от того с чем ты работаешь сейчас... и понять что же закладывали ребята.. когда писали этот язык.. основное слово там "простота"..

>Все параметры команд описаны в Help'е. Причем местами лучше чем любой другой документации. Не понятно как делать или результат отличается от описанного - ищите обходные пути.

--- Вам привести пример.. ммм.. скажем.. из Qt... или еще из каконть языка.. как там сделана хелпа... А искать обходные пути.. Вы знаете.. ну я не нашел ни в одной хелпе описания ListBox.. где бы была работа с итемами.. добавить удалить.. переименовать.. и т.д. Хелпа минимальна!!! и это факт..... Зная как на нашем предприятии пишут Руководства к эксплуатации или программиста... проще повесится... яркий пример вам.. Панорама..

По поводу... всего остального....
Вопросы:
1. Можно ли реализовать на MapBasic'e следующее:
а). Запуск одновременно двух процессов... (я склонен считать что нет.. но может я не знаю какогото нюанса... и поэтому спрашиваю у вас.. )?????
б). для меня так осталось и не понятным как обновить окно ибо Я ему пихал и ID и value... И что то там совсем не клеилось.. Я пробовал удалять окно и вызывать его повторно... но успехом это не увенчалось...
в) Можно ли вставить в Прогресс Бар постоянно меняющуюся строку.. Он перерисовывает все окно... или только его компонент? (Очень хотелось бы видеть это все в примерах..)
2. Я содрал с рапиды.. MBBuilder 1.5 мне она понравилась штука классная... только кто бы поделился ключиком....??????


P.S. Про прогресс Бар ... спс... я только потом понял... че написал... Да и не стоит думать что если в MapBasic есть диалоги то они исключительно сделаны просто так... Просто так да же мышки не... =)))))))))) Сори если грубовато...
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Аватара пользователя
Parlament
Интересующийся
Сообщения: 30
Зарегистрирован: 11 сен 2008, 14:51
Репутация: 0
Контактная информация:

Re: Ребята помогите взять "lvl up" по MapBasic

Сообщение Parlament » 12 сен 2008, 17:51

Я с удовольствием поделюсь наработанным с новичками кому понадобится такая же вещь как и мне.. На данный момент (Это Проверка на лицензию.. И диаложик который собирает указанные файлы.. в массив типа string и пихает его конвертеру по одной штучке... )

P.S. Зачем изобретать второй раз велосипед.... :D
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Ребята помогите взять "lvl up" по MapBasic

Сообщение Boris » 13 сен 2008, 00:42

Ура! Всем учить матчасть! Все есть в Help'е! Все таки они обновляются!
Вы все еще не верите, что "неправильно мыслите, что MapBasic или MapInfo должны быть к вам дружелюбны"?
Мне почему-то кажется, что вы уже так не думает...

Если хотите поделиться - так есть в сети англоязычныйх сайтов 2 или 3. Там много программ и примеров на MB. Пошлите туда. Не исключено, что действительно это будет велосипед, причем изобретенный раз 12-ый.

Не сочтите за труд, а что в вашем понимании конвертер? И что именно вы ему пихаете?
И зачем для этого MB? Я обычно обхожусь скриптом командной строки Windows. Тестовый файл необходимых команд и .. вуаля!
Ведь конвертер с диалоговым окном уже включен в поставку - называется Universal Transliator :shock:

Аватара пользователя
Parlament
Интересующийся
Сообщения: 30
Зарегистрирован: 11 сен 2008, 14:51
Репутация: 0
Контактная информация:

Re: Ребята помогите взять "lvl up" по MapBasic

Сообщение Parlament » 16 сен 2008, 08:50

Борис.. вы смешной человек =))) :mrgreen: мы так и будем все брать с запада? или мы начнем наращивать свою базу? А ребятам которые пишут курсовики.. нужна запариться излазить все эти сайты.. или быстренько глянуть.. здесь... и найти все что им нужно =) ? порой некоторые вещи которые читают в институтах совсем не нужны но увы курсовые по ним... занимают очень много времени...

Я склонен считать что МаpBasic Писали не клоуны.. А люди кому бы он был нужен и использовать его на 100%...

Конвертер ищет координаты и конвертирует... из 47->63 и из 63->64 при всем уважении но как сделаны эти конверторы я выложить не могу... но вы туда можете вставить конвертор свой...

Борис... Я понимаю вы уже "зубр" в MapBasic.. Не надо отправлять читать Мат часть почему интересно на лекциях в институте вас не посылали ту да же... а на оборот.. Читают.. и говорят что в такой то такой то книге.. вы это можите повторить..

И было бы очень приятно что бы вы не говорили что там все есть... а если я и ошибаюсь то привели бы выдержку из хелпы где черным по белому написано как добавлять итемы.. :roll:

P.S. Ну и на сладкое: я думаю фору не создавался только для того что бы тут все кричали и говорили что есть в хелпе.. а он создан для обсуждения: мнениями, методами.. Я больше чем уверен что вы этот велосипед изобрели точно так же как изобретаю его я... но я стараюсь думать о будущем поколении .. а вы?
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Аватара пользователя
Parlament
Интересующийся
Сообщения: 30
Зарегистрирован: 11 сен 2008, 14:51
Репутация: 0
Контактная информация:

Re: Ребята помогите взять "lvl up" по MapBasic

Сообщение Parlament » 16 сен 2008, 09:02

И зачем для этого MB? Я обычно обхожусь скриптом командной строки Windows. Тестовый файл необходимых команд и .. вуаля!

А вы не находите что спустя 8 часов глаз замыливается... да и под устаешь... а в MB все прикольно подсвечено... у меня все работает то что он собирает... Я чесно сказать не любитель "задротсвовать" (игровой сленг.. до ходить до крайней степени фанатизма ).. Там все очень мило и удобно.. Если у вас есть какието другие варианты =)))) Я с удовольствием их по пробую... но глаза надо как то то же любить =)

P.S. Для разработчиков на C++ есть Visual Assistens очень удобная вещь.. я думаю вы его оцените =)
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Ребята помогите взять "lvl up" по MapBasic

Сообщение Boris » 17 сен 2008, 01:48

Уважаемый друг и коллега,
я видимо отстал от жизни, так, в то время когда я учился в институте, слова "учите мат.часть, ... вашу ...!", были одним из основных способов обучения. Особенно программированию. В мое время студенту выдавалось 15% учебников и допуск в библиотеку, где он мог и должен был найти все остальное сам. Считалось, что Инженер, именно с такой буквы, на то и Инженер, что бы знать где что взять, а не техник, которому надо указкой показать, какую строчку инструкции читать. Но это так, лирическое отступление.
Теперь по существу:
1). Я не говорил, что в Help'е все есть. Я сказал, что лучше него - нет.
2). Добавлять новые контролы в форму MB, по моему все же нельзя, хотя я могу и заблуждаться. Может и можно, да я забыл.
3). Обновлять их - можно, в том числе и добавлять новые строки и значения в списки и текстовые строки. И эти способы указаны именно в Help'е. Ну и наверное в разделе "Custom Dialog Boxes", страница 122, MapBasicUserGuide.PDF, MapBasic 9.5
4). Я не утверждаю, что MB - плох во всем. Наоборот, он идеален в плане выполнения команд MapInfo любой сложности. И этому есть простое объяснение - весь MapInfo - это надстройка над интерпретатором команд MapInfo. MapInfo Runtime такого интерфеса не имеет, а выполняет команды точно так же. Я утверждаю, что как средство создания диалогов - он предельно ущербен, неудобен, плохо описан, и еще хуже сделан. Хотя может для эпохи Basic for DOS, он был и очень прогрессивен и хорош. Беда в том, что его все это время не улучшали, а только дополняли новыми командами, по мере их появления в MapInfo.
5). Вот с развитием "своего", тут вы меня просто умилили. Что собственно сегодня своего в вашем компьютере? Комплектующие, я думаю, китайские, разработка Тайвань или в лучшем случае США, операционная система - США, или любой другой страны, но точно не российский. Если вы конечно, вслед за президентом, не записали Lunix в российское ПО. Ну, и уж конечно, MapInfo, MapBasic, C++ - никакого отношения к России не имеют.
Я знаете ли, работал на российской вычислительной технике. Даже на нескольких, но даже тогда ГДР-овская была лучше и мощнее. А операционная система на ней была, как не смешно, опять американская, называлась ОП для IBM 360/370 и ее клонов.
6). Курсовики, вещь конечно нужная и местами очень интересная. И по моим наблюдениям, то кто не "запарился" ища информацию по своей курсовой, тот собственно ее и не делал. В такой работе нет ничего сверхестественного, именно это и называется научной или инженерной работой. Создание "нового" в результате собственного интеллектуального труда. Мне знаете "история партии", то же была мало нужна, но по прошествии времени становится очевидным, что человек, который сумел осилить и структурировать этот бред, хотя бы на уровне компиляции и структуризации сторонних текстов, любой другой сторонний тест и информацию будет способен структурировать и м.б. понять.
7.) Теперь вернемся к инженерной проблеме.Вы же не сказали уровень ваших пересчетов или конвертации. Если вы считаете из СК42 в СК63 по ключам, и не таблицу целиком, а каждую точку отдельно. Тогда, здесь очевидно, для чего надо резвиться с MB. Если же ваши пересчеты находятся в пределах точности самого MapInfo, при переходе от одной системы координат к другой, на общем эллипсоиде (Красовский 1942 г.), то тогда согласно утверждениям разработчиков MapInfo пересчет осуществляется с точностью 15 см. И команда "Save As" с установленными параметрами новой проекции, должна считать очень не плохо.
8). Раз уж вы спросили меня про другие варианты. Вот основной из них. Выбираем любую среду создания визуальных приложений. Я люблю VB или даже VBA. Кто-то любит иное. Это дело вкуса. Выполняем следующую последовательность действий:
а) создаем визуальную форму - окошко, кнопочки, списки и т.п. У меня это занимает от 10 до 60 минут, в зависимости от текущих "претензий" к красоте.
б) считываем список файлов для конвертирования в ListBox.
в) запускаем MapInfo, как фоновый процесс или подключаемся к существующему.
г) формируем список файлов для конвертации в виде набора команд "Export to MIF"
д) передаем его для экспортирования в работающую копию MapInfo. Это очень быстро выполняется. Получаем набор текстовых MIF/MID файлов.
е) средствами программирования среды визуального программирования считываем все полученные файлы по очереди.
ж) меняем заголовок файла с координатной системой на новый - нужный для конвертированной таблицы.
з) ничего не меняя в структуре MIF файла, и совсем ничего не меняя в MID файле, обходим все строки с координатами и пересчитываем их своим специальным алгоритмом.
и) записываем новую пару MIF/MID. Мы получили сконвертированный файл.
к) если есть потребность, то опять через ту же самую среду визуального программирования осуществляем потоковый импорт в MapInfo.
Писать получилось длиннее, чем делать. И на каждой стадии, работы мы находимся в среде, которая оптимальна, для выполняемой нами работы. Что собственно и есть основа разумного программирования, - делать самому только то, что за тебя не сделал никто другой. Ну по крайней мере меня так учили. Причем тогда, когда машинное время действительно ценилось больше, чем человеческое.
8 часов можно отлаживать алгоритм пересчета, а 8 часов воевать с дружелюбным интерфейсом MB и дрессировать MapInfo? Пожалейте себя! :lol:
б)

Аватара пользователя
Parlament
Интересующийся
Сообщения: 30
Зарегистрирован: 11 сен 2008, 14:51
Репутация: 0
Контактная информация:

Re: Ребята помогите взять "lvl up" по MapBasic

Сообщение Parlament » 17 сен 2008, 12:39

Boris писал(а):Уважаемый друг и коллега,
я видимо отстал от жизни, так, в то время когда я учился в институте, слова "учите мат.часть, ... вашу ...!", были одним из основных способов обучения. Особенно программированию. В мое время студенту выдавалось 15% учебников и допуск в библиотеку, где он мог и должен был найти все остальное сам. Считалось, что Инженер, именно с такой буквы, на то и Инженер, что бы знать где что взять, а не техник, которому надо указкой показать, какую строчку инструкции читать. Но это так, лирическое отступление.
Ну как вам сказать.. на эту тему можно долго и упорно спорить, обсуждать и единого вывода не будет... С каждым годом скелет социального общества меняется.. Я сам уж не такой молодой... но поколение после меня очень сильно отличается.. И я считаю не правильным применять, свою идеологию и психологию к каждому последующему поколению.. Ведь наверное у вас есть дети... И когда вы им говорите во я ваше время ....... они идут в свою комнату захлопнув дверь... что то бормоча.. мол: ничего ты уже не понимаешь старый хрыч... Это не относится лично к вам ... это то один из стандартных примеров... =))) Их масса и они разные...
Boris писал(а):Теперь по существу:
1). Я не говорил, что в Help'е все есть. Я сказал, что лучше него - нет.
2). Добавлять новые контролы в форму MB, по моему все же нельзя, хотя я могу и заблуждаться. Может и можно, да я забыл.
3). Обновлять их - можно, в том числе и добавлять новые строки и значения в списки и текстовые строки. И эти способы указаны именно в Help'е. Ну и наверное в разделе "Custom Dialog Boxes", страница 122, MapBasicUserGuide.PDF, MapBasic 9.5
Тут я вынужден прислушаться к вам.. литературы по MapBasic действительно мало... но мы можем дополнять ее примерами.. Менталитет русского человека отличается от западного по этому решение проблем различного рода может быть разным.. Что касается MapBasic 9.5.. Я не силен в этой теме.. и мне сказано выше 7.0 версии не прыгать.. по этому я и пользуюсь хелпой исключительно только для этой версии.. (на примере Qt3 и Qt4... очень сильны различия между версиями.. )
Boris писал(а):
4). Я не утверждаю, что MB - плох во всем. Наоборот, он идеален в плане выполнения команд MapInfo любой сложности. И этому есть простое объяснение - весь MapInfo - это надстройка над интерпретатором команд MapInfo. MapInfo Runtime такого интерфеса не имеет, а выполняет команды точно так же. Я утверждаю, что как средство создания диалогов - он предельно ущербен, неудобен, плохо описан, и еще хуже сделан. Хотя может для эпохи Basic for DOS, он был и очень прогрессивен и хорош. Беда в том, что его все это время не улучшали, а только дополняли новыми командами, по мере их появления в MapInfo.

Тут могу лишь сказать что разработчики всей этой лабуды движемы какойто идее.. и что они задумали никто е знает.. Если они его не могут улучить значит есть на это причины..
Boris писал(а):
5). Вот с развитием "своего", тут вы меня просто умилили. Что собственно сегодня своего в вашем компьютере? Комплектующие, я думаю, китайские, разработка Тайвань или в лучшем случае США, операционная система - США, или любой другой страны, но точно не российский. Если вы конечно, вслед за президентом, не записали Lunix в российское ПО. Ну, и уж конечно, MapInfo, MapBasic, C++ - никакого отношения к России не имеют.
Я знаете ли, работал на российской вычислительной технике. Даже на нескольких, но даже тогда ГДР-овская была лучше и мощнее. А операционная система на ней была, как не смешно, опять американская, называлась ОП для IBM 360/370 и ее клонов.
Я вам похвастаюсь за это наверное мне ноги не оторвут.. но есть русский Linux называется MCBC.. Я непосредственно работаю с ним...А то что платы и детали.. хм... ну так они сертифицированы 8-м отделом ФСБ и приняты на службу родины... (мол там нет ничего шпионского) они же вовремя по пользовались нашим ученым который изобрел телевизор.. Ну и наши МЕГА компьютер Эльбрус... по прежнему живет.. только он уже обсчитывает не только координаты а работает с 3D обьектами на топо-основе... Да и в принципе какая разница чьи детали в моем компьютере.. На смену их придут детали из японии малазии т.д. но дойдет когда нибудь и до России.. Надо только уметь ждать и верить в светлое будущее..
Boris писал(а): 6). Курсовики, вещь конечно нужная и местами очень интересная. И по моим наблюдениям, то кто не "запарился" ища информацию по своей курсовой, тот собственно ее и не делал. В такой работе нет ничего сверхестественного, именно это и называется научной или инженерной работой. Создание "нового" в результате собственного интеллектуального труда. Мне знаете "история партии", то же была мало нужна, но по прошествии времени становится очевидным, что человек, который сумел осилить и структурировать этот бред, хотя бы на уровне компиляции и структуризации сторонних текстов, любой другой сторонний тест и информацию будет способен структурировать и м.б. понять.
Тут я свами согласен... бред иногда надо то же почитывать.. но тут тогда цепляется другая сторона медали.. а смысл было идти на эту профессию если 70% из всего потока вообще перестали работать по специальности... Да же странно но никто этого не может обьяснить.. (если мало ли не уловили аналогии я поясню потом =) )
Boris писал(а): 7.) Теперь вернемся к инженерной проблеме.Вы же не сказали уровень ваших пересчетов или конвертации. Если вы считаете из СК42 в СК63 по ключам, и не таблицу целиком, а каждую точку отдельно. Тогда, здесь очевидно, для чего надо резвиться с MB. Если же ваши пересчеты находятся в пределах точности самого MapInfo, при переходе от одной системы координат к другой, на общем эллипсоиде (Красовский 1942 г.), то тогда согласно утверждениям разработчиков MapInfo пересчет осуществляется с точностью 15 см. И команда "Save As" с установленными параметрами новой проекции, должна считать очень не плохо.
Конвертер уже прошел испытания и признан годным к работе =)))))) Он сейчас уже не особо важен.. Но за инфу спс...
Boris писал(а): 8). Раз уж вы спросили меня про другие варианты. Вот основной из них. Выбираем любую среду создания визуальных приложений. Я люблю VB или даже VBA. Кто-то любит иное. Это дело вкуса. Выполняем следующую последовательность действий:
а) создаем визуальную форму - окошко, кнопочки, списки и т.п. У меня это занимает от 10 до 60 минут, в зависимости от текущих "претензий" к красоте.
б) считываем список файлов для конвертирования в ListBox.
в) запускаем MapInfo, как фоновый процесс или подключаемся к существующему.
г) формируем список файлов для конвертации в виде набора команд "Export to MIF"
д) передаем его для экспортирования в работающую копию MapInfo. Это очень быстро выполняется. Получаем набор текстовых MIF/MID файлов.
е) средствами программирования среды визуального программирования считываем все полученные файлы по очереди.
ж) меняем заголовок файла с координатной системой на новый - нужный для конвертированной таблицы.
з) ничего не меняя в структуре MIF файла, и совсем ничего не меняя в MID файле, обходим все строки с координатами и пересчитываем их своим специальным алгоритмом.
и) записываем новую пару MIF/MID. Мы получили сконвертированный файл.
к) если есть потребность, то опять через ту же самую среду визуального программирования осуществляем потоковый импорт в MapInfo.
Писать получилось длиннее, чем делать. И на каждой стадии, работы мы находимся в среде, которая оптимальна, для выполняемой нами работы. Что собственно и есть основа разумного программирования, - делать самому только то, что за тебя не сделал никто другой. Ну по крайней мере меня так учили. Причем тогда, когда машинное время действительно ценилось больше, чем человеческое.
8 часов можно отлаживать алгоритм пересчета, а 8 часов воевать с дружелюбным интерфейсом MB и дрессировать MapInfo? Пожалейте себя! :lol:
б)
Спс за заботу.. но как не странно.. но по кувыркаться я в этой теме хотел.. так для личного опыта.. Как говорил мой хороший коллега.. прежде чем приступать к чему то новому надо абстрагироваться от старого.. Конечно накатать на С++ .dll горазда проще... Я эту тему предусмотрел когда будет что то по сложнее.. А пока вроде просто.. Да и не сижу я по 8 часов за одним окном... это уж издевательство для мозга...

P.S. С вами приятно вести общение.. но я почти доделал свое детище... выложу на обозрение.. =) а потом будите бить меня ногами =))) :mrgreen:
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Ребята помогите взять "lvl up" по MapBasic

Сообщение Boris » 17 сен 2008, 22:41

Рад вашим успехам.
В жизни пришлось видеть и разработчиков Эльбруса - они читали курс мне программирования, потом работать с его бывшими программистами.
Но все же больше они любили про Кобол рассказывать. А использовать С и С++.
Что касается "истории партии", то надеюсь понятно, что я ее учил не по специальности. Моей специальностью была, да к счастью, и остается "прикладная математика".
А если есть желание вникнуть в MB, то как раз на иностранных сайтах находится большая коллекция мелких программ для MapInfo, в основном с исходниками. Может их анализ подскажет какие-то интересные идеи.
Относительно версии MB, то поверьте ничего в них не меняется. В том числе и Help, практически не меняется. Разве, что совсем чуть-чуть, и в основном на новые команды.
Я его используют только как справочник, так как MB, в свои исполнимые файлы прописывает номер своей версии и с нисходящими версиями не работает. Хотя сам код - не меняется.
Так что действительно MB 9.5 для MapInfo меньших версий - бесполезен. Программу создаст, но их в MapInfo < 9.5 запустить будет нельзя. Единственное его достоинство - что он бесплатен. Хотя может и интерфейс слегка улучшители? Тут не скажу, я его запускал, что бы убедиться, что кардинальных изменений не произошло.
К стати, недавно в сети видел выложенный MapX, знающие люди говорят - он сильно лучше, чем просто MB.

Аватара пользователя
Parlament
Интересующийся
Сообщения: 30
Зарегистрирован: 11 сен 2008, 14:51
Репутация: 0
Контактная информация:

Re: Ребята помогите взять "lvl up" по MapBasic

Сообщение Parlament » 18 сен 2008, 14:38

Доброго дня и отличного настроения.. У меня два вопроса...

Первы почему при такой конструкции прогресс бар не хочет отображатся вернее он отображается но не рисует шкалу...

Код: Выделить всё

Sub Convert
 allitem = TableInfo(Dest,TAB_INFO_NROWS)
 ProgressBar " Обработка даных " Calling write_out Range allitem
End Sub 

Sub write_out
.......
 A_Obj = Dest + ".obj"
 A_Row = Dest + ".RowID"
 Set CoordSys Table Dest
 Fetch First From Dest
 While not EOT(Dest)
  Print Chr$(12)
  if not A_Obj then
   Goto NextObj
  end if
  Res = A_Obj
  i = A_Row
  ProgressBar = i
  Print "Обрабатывается объект № " + Str$(i) + " из " +        Str$(TableInfo(Dest,TAB_INFO_NROWS))
.........
End Sub
Тут начальник подкинул новую доработку... Смысл такой... Есть менюшка.. где ты создаешь закладку... ну как в браузере.. Чтобы выбрать ее из списка и бац.. *.wor фаил будет загружен... Вот вопрос есть ли в Basice взаимосвязь какая нибудь чтобы работать c файлами проекта... Борис... проконсультируйте.. молодого специалиста... :oops:
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Ребята помогите взять "lvl up" по MapBasic

Сообщение Boris » 19 сен 2008, 01:54

Parlament писал(а):Доброго дня и отличного настроения.. У меня два вопроса...

Первы почему при такой конструкции прогресс бар не хочет отображатся вернее он отображается но не рисует шкалу...

Код: Выделить всё

.......
 A_Obj = Dest + ".obj"
 A_Row = Dest + ".RowID"
....
 Res = A_Obj
 i = A_Row
 ProgressBar = i
.........
End Sub
ProgressBar = i <------------ : Это точно числовое значение переменной ?
<------------ : Так трудно сказать, но похоже это - строка.
Parlament писал(а): Тут начальник подкинул новую доработку... Смысл такой... Есть менюшка.. где ты создаешь закладку... ну как в браузере.. Чтобы выбрать ее из списка и бац.. *.wor фаил будет загружен... Вот вопрос есть ли в Basice взаимосвязь какая нибудь чтобы работать c файлами проекта... Борис... проконсультируйте.. молодого специалиста... :oops:
Извините, я плохо понял вашу задачу в таком телеграфном стиле. Напишите больше и желательно про менюшку по подробнее - какая именно (лучше с картинкой), в каком программном продукте, что именно должна делать.
Что именно ждете от MB или MapInfo? Какая именно взаимосвязь вам нужна. WOR Файл - это просто структурированный набор линейных команд MB, его можно любым текстовым редактором создавать и править, соотвественно.

Аватара пользователя
Parlament
Интересующийся
Сообщения: 30
Зарегистрирован: 11 сен 2008, 14:51
Репутация: 0
Контактная информация:

Re: Ребята помогите взять "lvl up" по MapBasic

Сообщение Parlament » 26 сен 2008, 16:22

Код *.dll на С++ который мы будем использовать для защиты своего модуля в MapInfo... На самом деле можно здесь писать очень много но у меня все коротко и просто задается вопрос если да то 1 если нет то 0 (проявите фантазию =))

Код: Выделить всё

#include "stdafx.h"
#include "windows.h"

#define DLL_NAME "prot.dll"
#define FUNC_NAME "IsLicensed"

__declspec(dllimport) int __stdcall IsLicensed(void);

typedef int (*LicCheckFunc)(void);

int _tmain(int argc, _TCHAR* argv[])
{
	int retVal = 0;
	HINSTANCE    hDLL;   // Handle to DLL
	LicCheckFunc lpFunc; // Function pointer


	hDLL = LoadLibrary(DLL_NAME);
	if (hDLL != NULL)
	{
		lpFunc = (LicCheckFunc)GetProcAddress(hDLL,	FUNC_NAME);
		if(0 != lpFunc)
		{
			retVal = lpFunc();
		}
		FreeLibrary(hDLL);
	}


	if(0 == retVal)
		::MessageBox(NULL, "Нелицензионная копия программного обеспечения!",
		             "Внимание", MB_OK | MB_ICONERROR);

	return 0;
}
Это код экспорта *dll в MapBasic не судите строго писал как умел =)

Код: Выделить всё

Include "Sub.def" 'Тут я декларировал процедуры и объявлял глобальные переменные ... так легче вызывать в другом модуле... 

'Указываем *.DLL не явно. (чтобы поиск осуществлялся рядом с бинарником или в дерикториях.... ну там в справочнике написано =) )
Declare Function IsLicensed Lib "tias_guard.dll" () As SmallInt
'******************************
' Процедура проверки и активации
'   ключа
'******************************
Sub License_check
Dim x As SmallInt
'Вызов функции из длл
x = IsLicensed()
If x  <> 0 Then
  Else
  Call Exit
End If
End Sub 'License_check

Я строил Диалоговое окошко в котором с помошью лист бокса я накапливал масив стрингов и потом по одному скарливал... ну тут уже вы сами придумаете кому их скармливать...

Код: Выделить всё

Include "Sub.def"
Include "Const.def"
Include "MapBasic.def"

'************************************
'Локальное объявление функций диалога
'************************************
Declare Sub OkButtonSub
Declare Sub CancelButtonSub
Declare Sub AddButtonSub
Declare Sub DeleteButtonSub
Declare Sub DlgListBox
Declare Sub ReShow

Sub DlgMain
' Закрываем все
 Close all
' Call License_check Вызываем якобы проверку лицензии... если нет то программа сворачивается и закрывается... 
 Call DlgListBox
End Sub 'DlgMain

'Процедура создания диалогового окна для выбора списка карт
Sub DlgListBox

  Dialog
  Title "Список загружаемых карт"
   Control ListBox
   Title From Variable NameList
   Position 15, 15
   Width 190
   Height 200

 Control OKButton
   Width 50
   Height 15
   Title "Конвертация"
   Calling OkButtonSub
   ID 1

 Control CancelButton
   Width 50
   Height 15
   Title "Выход"
   Calling CancelButtonSub
   ID 2

 Control Button
   Position 230, 15
   Width 50
   Height 15
   Title "Добавить"
   Calling AddButtonSub
   ID 3

 Control Button
   Position 230, 45
   Width 50
   Height 15
   Title "Удалить"
   Calling DeleteButtonSub
   ID 4

End Sub 'DlgListBox

'Процедура добавления элементов в список (ListBox)
Sub AddButtonSub
  'Выбираем файл для конвертации
  TabFile=FileOpenDlg("","","TAB","Выберите карту ...")

'Проверяем, выбран ли файл
  If TabFile = "" Then
    Note "Вы не выбрали файл,"+Chr$(10)+"конвертация прервана !!!"
    Exit Sub
  End If

'Создание массива, названий открываемых карт
   i = i + 1
   ReDim NameList(Ubound(NameList)+1)
     NameList(i) = TabFile
 Call ReShow
End Sub 'AddButtonSub

'Процедура удаление элементов из списка (ListBox)
Sub DeleteButtonSub
 If  i > 0 Then
 i = i - 1
 ReDim NameList(Ubound(NameList)-1)
'Вызов закрытия и открытия окна
  Call ReShow
  Else
    Note "Нет загруженых карт"
  End If
End Sub 'DeleteButtonSub


' Процедура выполнения открытия карты и ее конвертация из списка
Sub OkButtonSub
 If  TabFile  = ""  Then
 ElseIf i <= 0 Then
   Note "Вы не выбрали файл,"+Chr$(10)+"конвертация прервана !!!"
   Exit Sub
 End If
End Sub 'OkSub

' Процедура закрытия
Sub CancelButtonSub
Dim tmp_item As SmallInt
For  tmp_item = 1 To i
 i = i - 1
 ReDim NameList(Ubound(NameList)-1)
Next
 Dialog Remove
'Вызов закрытия и открытия окна
  Close all
  Exit Sub
End Sub 'CancelSub

' Процедура ReShow окна
Sub ReShow
  Dialog Remove
 Call DlgListBox
End Sub

Ребята не бейте больно но честно я не смог осилить функции обновления окна.. я сделал как умел... не надо тыкать в меня палками =)))))) если вы доходчиво мне объясните то я поправлю... (время поджимало.. =((( )
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

DiGriz
Новоприбывший
Сообщения: 1
Зарегистрирован: 10 ноя 2008, 08:05
Репутация: 0

Re: Ребята помогите взять "lvl up" по MapBasic

Сообщение DiGriz » 10 ноя 2008, 08:14

Boris писал(а): Так что действительно MB 9.5 для MapInfo меньших версий - бесполезен. Программу создаст, но их в MapInfo < 9.5 запустить будет нельзя.
Бред!!! :!: :shock: В любом текстовом редакторе (я пользовался текстовым редактором файлового менеджера Far), использующем кодировку дос можно открыть уже скомпилированную программу и поменять версию. Она там на самом верху. Когда лет 8 назад были проблемы с совместимостью версий ( нам только завезли MapInfo) мне приходилось именно так и делать.

PS :!: Не судите строго, но я повторю просьбу одного из участников форума: дайте кто-нибудь ключик для MBBuilder...

Аватара пользователя
Parlament
Интересующийся
Сообщения: 30
Зарегистрирован: 11 сен 2008, 14:51
Репутация: 0
Контактная информация:

Re: Ребята помогите взять "lvl up" по MapBasic

Сообщение Parlament » 10 ноя 2008, 16:20

:lol: Зачет!!! Вопрос актуален!!!

Почти готов выложить проект для работы с рабочими наборами в MapInfo для упрощения запуска все открытые рабочие наборы можно сохранить как в Браузере вкладка избранные..

Кого интересует или есть желание доработать.. Милости просим..
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя