На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

EAV в mapacces.dll при вызове LoadMapToPicture(), LoadMapToBmp()

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2 3 4 След.
RSS
EAV в mapacces.dll при вызове LoadMapToPicture(), LoadMapToBmp()
 
Отправил :) .
 
Приняли. Разбираемся.
 
Разобрались... Господа разработчики, лучше бы вы не позорили себя!
Частную переписку с (сами знаете кем) тут не цитирую. То, что ОН мне выслал - не комментирую. Не хочу быть забаненным из-за ненормативной лексики.
Очень надеюсь, что кто-то более квалифицированный таки найдёт время и разберётся в проблеме.
---
Включил в Билдере отладку под GodeGuard - даже не смог попасть в свою DLL. EAV по утечке памяти выдала Панорама при попытке вызова задачи...
Изменено: Газонокосильщик - 08.10.2015 11:33:21
 
CodeGuard корректно работает только, если вся цепочка вызываемых библиотек и EXE собраны под CodeGuard.
Кроме того, мы применяем тип __int64, который просто вешает CodeGuard.
 
Ответ по САБЖУ будет?
Цитата
Oleg Belenkov пишет:
CodeGuard корректно работает только, если вся цепочка вызываемых библиотек и EXE собраны под CodeGuard.
Расскажите это ребятам из Борланда (Ембаркадеро етс...).
Цитата
Oleg Belenkov пишет:
мы применяем тип __int64, который просто вешает CodeGuard
Я его тоже использую. Остальное - см. выше.
---
Для тех, кто не знает, что такое CodeGuard.
Это встроенная в C++ Builder'ы утилита, позволяющая ловить (в частности) утечки памяти типа динамический объект создан, но не удалён. CG в протоколе так и пишет - объект (модуль, строка) размером ... байт создан но не удалён. Очень полезная штука. Используется исключительно при отладке. Не только потому, что требует наличия соответствующей DLL, но и потому, что здорово тормозит сам процесс. Поэтому при отладке конкретной DLL CG подключается именно для неё. А вызывающее DLL приложение может быть написано хоть на языке ассемблера. Ему (приложению) по барабану, на чём и как собрана вызываемая DLL. Об этом давным-давно позаботился Марек Збиковски (автор EXE-формата, если кто не в курсе - любой EXE/DLL-файл начинается с символов MZ  :) ).
Изменено: Газонокосильщик - 10.10.2015 16:44:26
 
Вам предоставлен текст программы, которая демонстрирует корректное выполнение функции сохранения изображения в файл. Пример работает под управлением ГИС Карта 2011.
По вашему мнению, он не работает?
 
Объясняю ещё раз, члено и раздельно - мне не нужен пример чистого вызова LoadMapToPicture() с получением её результата. Мне нужно объяснение, почему при запуске цепочки ВАШИХ функций последняя из них, LoadMapToPicture(), создаёт иксепшн в ядре (mapaccess.dll).
Для новичков в программировании - если в функции возникает EAccessViolation (EAV, исключение, искепшн, етс...), то результат она не вернёт. Никогда и никому. Потому, что она рухнула.
---
Цитата
Andrey Gheleznyakov пишет:
Не надо искать черную кошку в темной комнате, особенно в случае, если ее там нет.
Кошки действительно нет. Есть очередная чёрная дыра. Вам не интересно узнать, где она находится?
Изменено: Газонокосильщик - 10.10.2015 18:24:59
 
Такие вставки как "для новичков" - означают одно - ВЫ "гуру".
Тогда ВАМ должно быть знакомо, что при выполнении  сложного текста (в вашем случае не просто вызывается последовательность функций нашего ГИС АПИ, а масса ВАШЕГО, не проверенного, так как ВЫ ему доверяете и считаете безобидным в плане разрушения оперативной памяти) надо делить задачу по частям, чтобы найти ошибку.
Мы ВАМ это и предложили и выяснили, что LoadMapToPicture - работает.
Теперь от ВАС пример простой последовательности вызова функций ГИС ядра, без ваших "автоматизаций" работы диалогов и т.п.
Будем совместно решать проблему постепенно.
 
Цитата
Andrey Gheleznyakov пишет:
Такие вставки как "для новичков" - означают одно - ВЫ "гуру".
Насчёт себя - не знаю, насчёт вашего сотрудника - промолчу ещё раз.
Цитата
Andrey Gheleznyakov пишет:
а масса ВАШЕГО, не проверенного
Там всего-навсего обработка события таймера, в котором бот ищет ВАШУ же форму и выполняет действия оператора. И всё. Операций с памятью там нет вообще. И вы это прекрасно поняли.
Цитата
Andrey Gheleznyakov пишет:
надо делить задачу по частям, чтобы найти ошибку
ОК! Таймер (чтобы он не смущал), выкину.
 
Таймеры и их события удалил.
Загрузка библиотек и функций - динамическая, LIB-файлов в сборке нет, конфликт LIB и DLL исключён.
Для чистоты эксперимента - снёс Панораму из Program Files... и установил её в C:\Panorama11.
Запустил, получил ошибку для LoadMapToMap() - ошибка чтения HDR-файла. С чего бы это?
Поменял на mapAppendData() - отработала ОК!
Опции в окне трансформирования ввёл ручками, запустил, отработала ОК.
LoadMapToPicture() снова выдала то же самое EAV.
---
В аттаче исходники и данные. Если кто захочет попробовать - проект собран на C++ Builder 2010. Если есть только C++ Builder 6, то нужно закомментировать вызовы
::WideCharToMultiByte() и подставлять параметрами функций MapAPI непосредственно данные компонентов Билдера - что-то типа ListBox1->Items->Strings[i].c_str().
Страницы: Пред. 1 2 3 4 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности