Архів теґу: русификация

[Qt] QAxObject – как правильно освободить память.

Для использования COM-объектов под Windows в Qt используется специальный класс – QAxObject.
Для его использования под GPL-лицензией необходимо зайти в папку qt/src/activeqt – и выполнить qmake и make install, а так же подключить библиотеку в проект: Продовжувати читання [Qt] QAxObject – как правильно освободить память.

[Qt] Как динамически загрузить dll (shared libraries) под Linux

Для этих целей используется класс QLibrary который является по сути оберткой над системными вызовами.
Но за частую, даже после того, как приложение с библиотекой собрано – библиотека не грузится. Проблема как правило в отличиях в именования разделяемых библиотек (тех же dll) и Продовжувати читання [Qt] Как динамически загрузить dll (shared libraries) под Linux

[Qt] QListView – как реализовать множественный выбор.

Компонент, о котором пойдет в этой статье, используется часто в самых различных ситуациях. И это в принципе не удивительно, QListView во первых позволяет удобно отображать самые разные типы данных, во вторых – в полной мере реализует принцип Model-View (модель-представление).
Но начинающих часто может Продовжувати читання [Qt] QListView – как реализовать множественный выбор.

[WP]Русификация WordPress. Решение одной ошибки

В процессе установки известного блогодвижка WordPress столкнулся с довольно неприятной проблемой. Не смотря на то, что на хостинг я заливал русифицированную версию, тем не менее и не смотря ни на что блог оставался английским – и хоть ты плач.

Поиск по интернету особо ничего не дал. Стандартная рекомендация – проверить настройки в файле wp-config.php, в котором должно было бы быть:

define ('WPLANG', 'ru_RU');

была выполнена, но толку с этого понятное дело никакого. Опрос разнообразных “гуру” и нормальных людей результата не принес – все утверждали что работать все должно, но все-таки не работало.
Как оказалось – Продовжувати читання [WP]Русификация WordPress. Решение одной ошибки

[Qt]Microsoft Office XML Reference: Пример извлечения информации

Начиная с версии MS Office 2000 офисный пакет умеет выполнять преобразование документов в формат XML. И это очень удобно – ввиду того, что данный формат является кроссплатформенным и легко поддается обработке.
Для разработчиков компания предоставляет набор документации – XML Reference Schemas, (например для 2003 офиса вы можете скачать Продовжувати читання [Qt]Microsoft Office XML Reference: Пример извлечения информации

[Qt+Firebird] Как установить начальное значение генератора/последовательности из клиента

В процессе работы столкнулся с необходимостью – дать возможность пользователю устанавливать начальное значение для генератора (точнее в стандарте – SEQUENCE).
Плохо это или хорошо, речь не о том.

Для этого в Interbase/Firebirde используется Продовжувати читання [Qt+Firebird] Как установить начальное значение генератора/последовательности из клиента

FindWindow Function [MSDN]

Функция возвращает указатель (handle) на верхнее окно, имя окна и имя класса которого полностью сосуществуют заданной строке. Эта функция не ищет дочерние окна. Она не предназначена для регистрозависимого поиска.
Для поиска дочерних окон, начиная с указанного дочернего окна, используйте FindWindowEx
Синтакс
HWND WINAPI FindWindow(
__in LPCTSTR lpClassName,
__in LPCTSTR lpWindowName
);
Параметры
lpClassName [in]
LPCTSTR
Имя класса либо его уникальный идентификатор (class atom) созданный функцией RegisterClass

Утилита для удаления файлов

После того как проект закончен, откомпилирован, протестирован и сдан – его нужно отправлять в архив. Естественно в архиве не нужны объектные файлы, исполнимые и прочее.
Если проект небольшой – то проблемы особой конечно нет. Но если проект достаточно объемный – то делать это руками надоедает.
Для того что бы облегчить задачу и была создана данная утилита. Ее задача – удалить из директории и поддиректорий Файлы по указанной маске.
Набор масок можно загружать из файла, или создавать самому.
Исходные коды прилагаються.
Скриншот программы DeleteGUIСкриншот программы DeleteGUI

Здесь можно обсудить и задать вопрос

Использование STL. Часть первая.

Стандартная библиотека С++ и ее достаточно важная часть стандартная библиотека шаблонов призвана выполнять две основные задачи. Прежде всего – это набор стандартных типов данных и функций готовых к употреблению. И в тоже время – это среда разработки для создания и сохранения новых библиотечных компонентов.
Стандартная библиотека С++ в действительности состоит из 10 небольших библиотек:

  1. Библиотека языковой поддержки, которая содержит типы и функции, непосредственно связанные с работой компилятора С++. В частности сюда входят константы, определяющие диапазоны и уровень точности вычислений.
  2. Библиотека диагностики, содержит классы исключений и сообщения о ошибках
  3. Библиотека общего пользования, содержит большой набор средств, которые трудно отнести к какой нибудь специализированной библиотеке.
  4. Библиотека строк, содержит средства манипулирования текстовыми строками
  5. Библиотека локализаций – содержит наборы национальных и международных символов и форматов, необходимых для работы с датами, временем и валютой.
  6. Библиотека контейнеров.
  7. Библиотека итераторов.
  8. Библиотека алгоритмов.
  9. Библиотека чисел – представляет пользователям средства для работы с комплексными числами, специальные числовые массивы и алгоритмы вычислений.
  10. Библиотека ввода-вывода.

В данном цикле статей все части стандартной библиотеки мы охватить не сможем. Мы будем работать с библиотекой строк, контейнеров, итераторов, алгоритмов и библиотекой ввода-вывода.
В качестве цели мы будем разрабатывать маленькую электронную записную книжку(SmallPIM – Small Personal Information Meneger). В данной статье мы рассмотрим основные вопросы связанные с формулированием требований к проекту, следующая статье мы рассмотрим планирование классов – а написание кода – это будет уже темой следующей статьи.

Объектно-ориентированный анализ проекта

Формулирование требований

  1. Программа должна объединять в себе возможности адресной книги и календаря контактов. Адресная книга позволит пользователям сохранять и редактировать адреса и номера телефонов, просматривать и выбирать записи по именам, а так же осуществлять простой поиск записи по ключевому слову. Пользователь должен иметь возможность выбирать запись из общего списка и открывать ее для просмотра и редактирования.
  2. Календарь контактов позволит пользователям записывать и редактировать свединия о деловых контактах и событиях в хронологической последовательности. Нужно позволить просматривать список событий по месяцам, неделям и дням. В любом режиме просмотра пользователь должен иметь возможность выбрать запись и открыть ее для просмотра или редактирования
  3. Первая версия программы реализует работу через командную строку
  4. Первая версия программы сохраняет данные в файл в собственном формате.
  5. Программа должна иметь возможность дальнейшей модернизации:
    • заменить интерфейс командной строки на графический или веб;
    • добавить дополнительные функции обработки списков данных;
    • добавить дополнительные функции по работе со временем.
  6. Программа будет создаваться в первую очередь с целью демонстрации различных возможностей стандартной библиотеки.

Анализ ситуаций использования

Ситуации ввода данных

  1. Пользователь хочет ввести новую запись адреса. Программа предлагает ввести ФИО, номер телефона, емайл, адрес. Обязательным является только ввод имени – все остальные данные пользователь вводит по желанию.
  2. Пользователь хочет изменить запись. Для этого он должен выбрать ее либо из списка, либо найти в поиске, после чего получает возможность изменить данные в любом из полей
  3. Пользователь хочет удалить запись. Для этого пользователь выбирает запись из списка, либо при помощи функции поиска и дает команду на удаление.
  4. Пользователь хочет создать контакт. Программа предлагает ввести конечную и начальную даты, а так же описание. Обязателен клонтроль времени – конечная дата не может быть меньше или раной начальной.
  5. Пользователь хочет изменить контакт. Для этого он выбирает его из списка или при помощи поиска и дает команду для редактирования. Обязателен контроль времени.
  6. Пользователь хочет удалить контакт. Для этого он выбирает его из списка или при помощи поиска и дает команду на удаление.

Ситуации поиска и отображения записей

  1. Пользователь хочет найти одну или несколько записей по имени или фамилии. Программа предлагает ввести имя (допускается частичный ввод)и/или фамилию. Если точное соотвествие не обнаружено, программа должна возвратить список записей для выбора пользователем, имена которых начинаются с введеной пользователем комбинации букв. Если несколько записей сосуществуют критерию – все они должны быть выведены.
  2. Пользователь хочет найти запись содержащую ключевое слово (комбинацию слов). Программа должна возвратить все записи соотвествующие критерию.
  3. Пользователь хочет просмотреть все контакты, назначенные на определенный день. Программа должна возвратить первые строки описаний всех контактов соответствующих указанной дате.
  4. Пользователь хочет просмотреть все контакты назначенные на определенную неделю. Программа должна возвратить первые строки описаний всех контактов соответствующих указанной дате.
  5. Пользователь хочет просмотреть на какие дни месяца у него назначены контакты. Программа должна возвратить календарь, в котором дни с контактами отмечены особым образом.
  6. Пользователь хочет посмотреть назначенные контакты на следующий день или следующую неделю. Программа должна обеспечить возможность быстрого возвращения подобной информации в хронологическом порядке с выводом первых строк описаний назначенных контактов.
  7. Пользователь хочет просмотреть все контакты назначенные им на некоторый промежуток времени. Программа должна предоставить возможность пользователю указать временной диапазон в днях, неделях или месяцах для возвращения всех соответствующих записей в хронологической последовательности.

Ситуации возникновения ошибок

  1. Пользователь ошибочно ввел запись с одинаковым именем и фамилией. Программа должна предупредить пользователя о существовании подобной записи и пердложить подтвердить ввод или отменить его.
  2. Пользователь пытается ввести контакт с временем начала раньше текущего. Программа должна предупредить его о этом.
  3. Пользователь пытается ввести контакт с временем окончания раньше времени начала. Программа должна предложить изменить время или отменить ввод.

В следующей статье мы рассмотрим планирование классов, которые будут нужны нам для работы и выделим общие логические компоненты программы.

(с)2009 Константин Малахов. При перепечатке ссылка на ресурс обязательна.