bool CExcelDOMStripperStrategy::Excel2007(IDispatchPtr spDispWorkbook) { Excel::_WorkbookPtr spWorkbook = spDispWorkbook; CStdString sVer(spWorkbook->Application->Version); int iVer = _wtoi(sVer.Left(2).c_str()); if (iVer >= 12) return true; return false; }
void frmMain::readReply(QNetworkReply * replyIn) { // Проверяем, не произошло ли ошибки при выполнении запроса: if (replyIn->error() != QNetworkReply::NoError) { // Ошибка произошла - сообщаем о ней. Если поднят флаг выхода - // предлагаем пользователю настроить параметры соединения. Если флаг // выхода не поднять - значит, пользовательский интерфейс уже открыт, // и смысла предлагать пользователю его открыть нет. QString sMsg(tr("Failed to get version info from site.")); QString sErr(replyIn->errorString()); if (bExitOnReply) { sMsg.append(tr(" Open connection settings?")); if (MsgUtilsMy::showQuestion(this, false, sMsg, QString(), sErr)) bExitOnReply = false; } else MsgUtilsMy::showErrorMsg(this, sMsg, QString(), sErr); // Если установлен флаг выхода - выходим из программы, иначе показываем // основную форму: if (bExitOnReply) qApp->exit(0); else this->show(); // Завершаем функцию: return; } // Получаем текст полученного ответа на запрос: QString sVer(replyIn->readAll()); // Маркер начала версии программы: QString sVerStartMark(VERSION_START); // Маркер окончания версии программы: QString sVerEndMark(VERSION_END); // Проверка наличия версии программы в нужном формате. // Ищем маркер начала строки версии: int iVStart = sVer.indexOf(sVerStartMark, 0, Qt::CaseInsensitive); // Позиция маркера окончания строки версии: int iVEnd = -1; // В случае, если маркер начала версии найден - ищем маркер окончания версии: if (iVStart > -1) iVEnd = sVer.indexOf(sVerEndMark, iVStart, Qt::CaseInsensitive); // В случае, если маркер начала или маркер окончания строки версии не найден - // сообщаем об ошибке и завершаем функцию: if (iVStart == -1 || iVEnd == -1) { // Ошибка произошла - сообщаем о ней: MsgUtilsMy::showErrorMsg(this, tr("Error while readin version from site."), QString(), tr("Version start or version end marker is not found.")); // Если установлен флаг выхода - выходим из программы, иначе показываем // основную форму: if (bExitOnReply) qApp->exit(0); else this->show(); // Завершаем функцию: return; } // Убираем окончание строки, начиная с первого символа маркера окончания строки версии: sVer.remove(iVEnd, sVer.length() - iVEnd); // Убираем начало строки до версии, включая маркер начала версии: sVer.remove(0, iVStart + sVerStartMark.length()); // Создаём объекты версий: LWVersion verCurrent(sCurVer); LWVersion verSite(sVer); // Если версия на сайте больше - сообщаем об этом и предлагаем перейти на сайт: if (verSite.isHigherThan(verCurrent)) { if (MsgUtilsMy::showQuestion(this, false, tr("New %1 version is available. Open download page?").arg(sProg))) QDesktopServices::openUrl(QUrl(sPageGoTo)); } // Установлена последняя версия. В случае, если поднят флаг выхода // после проверки - сообщать о наличии последней версии пользователю // не нужно. В случае, если флаг выхода не поднят - значит, проверка // запущена пользователем, и надо сообщить ему, что у него самая // последняя версия: else { // Сообщаем об отстутствии обновлений в случае, если вывод // таких сообщений явно включен, и в случае, если вывод // не выключен и не поднят флаг выхода после проверки: if ((iNupMsg == 2) || ((iNupMsg != 1) && !bExitOnReply)) // Сообщаем, что установлена последняя версия: MsgUtilsMy::showInfoMsg(this, tr("Latest %1 version is installed.").arg(sProg)); } // Если поднят флаг завершения работы приложения после получения ответа - // завершаем работу приложения, иначе показываем главное окно: if (bExitOnReply) qApp->exit(0); else this->show(); }