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

[MAPAPI] mapGetAnySxfInfoByName не возвращает ноль, если передать путь к несуществующему файлу

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
[MAPAPI] mapGetAnySxfInfoByName не возвращает ноль, если передать путь к несуществующему файлу, mapGetAnySxfInfoByName не возвращает ноль, если передать путь к несуществующему файлу
 
mapGetAnySxfInfoByName не возвращает ноль, если передать путь к несуществующему файлу.

Хотя я мог опять что-то перепутать =)
Код
    QByteArray sxfKoi8r = gis::common::convertStringToKOI8_R(sxfFile.absoluteFilePath());
    long rc = panorama::mapGetAnySxfInfoByName(sxfKoi8r.constData(), info.m_sxfInfo,
                                     info.m_sxfSheetInfo);
    if (rc == 0){
        qDebug() << __FUNCTION__ << "can not get sxf info for" << sxfFile.absoluteFilePath();
        return info;
    }

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

Возвращает -1.
Код
$ ls
200t02w.RSC  M3827.sxf
$ ~/run.sh ~/isup3 SxfUtil m3827.sxf 200t02w.RSC 2>&1| grep mapGetAnySxf
getInfo rc of mapGetAnySxfInfoByName -1
$ ~/run.sh ~/isup3 SxfUtil M3827.sxf 200t02w.RSC 2>&1| grep mapGetAnySxf
getInfo rc of mapGetAnySxfInfoByName 10775


И это даже наверное правильно, потому что может быть пустой SXF, не содержащий ни одного объекта (теоретически), и тогда код возврата должен быть нулевым - ноль объектов.

Но в комментариях везде написано про ноль:
Код
 // Запросить паспортные данные из файлов SXF, TXF, MAP, SIT, SITX
 // по имени файла 
 // name - имя файла карты в одном из вышеперечисленных форматов
 // Структуры MAPREGISTER и LISTREGISTER описаны в mapcreat.h
 // rscname - адрес буфера для записи имени классификатора (может быть 0)
 // rsize - длина буфера в байтах
 // sheetname - адрес буфера для записи длинного имени карты (может быть 0)
 // ssize - длина буфера в байтах
 // securitycode - адрес поля для записи кода степени секретности (может быть 0)
 // ( 0 - не установлено, 1 - открытая информация (unclassified), 
 // 2 - информация с ограниченным доступом (restricted),
 // 3 - информация для служебного пользования (confidential),
 // 4 - секретная информация (secret), 5 - совершенно секретная информация (topsecret))
 // Возвращает число объектов в карте
 // При ошибке возвращает ноль
 
_VECIMP long int _VECAPI mapGetAnySxfInfoByNamePro(const WCHAR * name, MAPREGISTEREX * mapreg,
                                                  LISTREGISTER * sheet,
                                                  WCHAR * rscname, long int rsize,
                                                  WCHAR * sheetname, long int ssize,
                                                  long int * securitycode);
                                                  
_VECIMP long int _VECAPI mapGetAnySxfInfoByNameUn(const WCHAR * name, MAPREGISTEREX * mapreg,
                                                 LISTREGISTER * sheet);
_VECIMP long int _VECAPI mapGetAnySxfInfoByName(const char * name,
                                               MAPREGISTEREX * mapreg,
                                               LISTREGISTER * sheet);
 
Здравствуйте!

Спасибо за замечание: в дальнейшем доработаем функцию таким образом, чтобы она возвращала 0 при отсутствии файла в системе и -1 при отсутствии в нем объектов.
Страницы: 1
Читают тему (гостей: 1)



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

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