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

Удаление листа многолистовой карты

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1 2 След.
RSS
Удаление листа многолистовой карты, Не получается удалить лист из карты
 
Возникла необходимость удалить лист(sitx) из многолистовой карты(mpt, помимо главного листа в карте 5 листов).
Пробовал функцию - mapDeleteList, но она возвращает 0 и оставляет карту без изменения.

Просьба привести пример как это можно осуществить.  

Версия библиотеки 11.
 
mpt - это список данных в формате INI-файла.

Формирование и обновление файла mpt можно выполнить через вызов функции:

Код
  // Сохранить текущее описание данных в проекте данных
  // hmap -  идентификатор открытых данных
  // name - имя файла проекта (MPT : структура, как в INI)
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSaveProjectUn(HMAP hMap, const WCHAR * name);
_MAPIMP long int _MAPAPI mapSaveProject(HMAP hMap, const char * name);


Если необходимо исключить файл sitx, то достаточно открыть проект (mapOpenData) закрыть соответствующую карту и пересохранить проект:

Код
  // Закрыть пользовательскую карту в заданном районе работ
  // hMap - идентификатор открытой карты
  // hSite - идентификатор открытой пользовательской карты
  // Если hSite == 0, закрываются все данные обстановки
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapCloseSiteForMap(HMAP hMap, HSITE hSite);
 
Спасибо помогло.

А почему mapDeleteList не работает?
 
mapDeleteList работает в случае, когда один файл паспорта карты *.map (не файл проекта - набора нескольких карт) содержит несколько листов (чаще всего номенклатурных).
 
При попытке удалить файлы происходит ошибка - файл занят, при этом я только что закрыл его(mapCloseMap).
Есть ли способ заставить библиотеку освободить файл?
 
mapCloseMap Вы для чего вызываете: для mpt или еще для какой карты?
 
Для mpt.
 
Надо восстановить последовательность действий:
1. Запустили приложение
2. Открыли mpt
3. работаем
4. Закрыли mpt

Далее что: закрыли приложение и удаляем файл, удаляем файл сразу после закрытия mpt...
 
Приложение не закрыли, а открыли другой файл(карту с первой никак не связаную). Закрытую карту(mpt) пробуем удалить средствами ОС( windows) - не удаляет.
Если приложение закрыть и попробовать удалить закрытую карту то все удаляется.
 
Написал тестовое приложение
1. Открываю карту.
2. Создаю объект.
3. Закрываю карту.
4. Удаляю карту.

Все работает как часы. Ниже текст. А каков алгоритм работы у Вас?
--------------------------------------------------
var
 sMapFileName : string;

procedure TForm1.btnOpenClick(Sender: TObject);
begin
sMapFileName := ExtractFilePath(Application.ExeName) + 'military.sitx';
mvMap.MapOpen(sMapFileName, true);
end;

procedure TForm1.BtnCloseClick(Sender: TObject);
begin
 mvMap.MapClose;
end;

procedure TForm1.btnDeleteClick(Sender: TObject);
var
 ii : boolean;
begin
ii := DeleteFile(sMapFileName);
if not ii
   then ShowMessage('Не удалось удалить файл');
end;

procedure TForm1.btnCreateClick(Sender: TObject);
begin
 MapObj1.CreateObjectByExCode(0, KM_IDFLOAT2, 320000174, OL_SQUARE);

 MapPoint1.PlaceInp := PP_PLANE;
 MapPoint1.SetPoint(6196232, 7471608);
 MapObj1.Metric.Append(0,MapPoint1.point);
 MapPoint1.SetPoint(6197232, 7472608);
 MapObj1.Metric.Append(0,MapPoint1.point);
 MapPoint1.SetPoint(6196700, 7473608);
 MapObj1.Metric.Append(0,MapPoint1.point);
 MapPoint1.SetPoint(6196232, 7471608);
 MapObj1.Metric.Append(0,MapPoint1.point);

 MapObj1.Commit;

 MapObj1.Center;

end;
Страницы: 1 2 След.
Читают тему (гостей: 1)



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

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