При автоматизации обмена с устройствами всегда необходимо знать: есть обмен с устройством или нет. Как реализовать такую проверку? Читать полностью →
»Шпаргалка Windows API» в новом формате
Я решил изменить формат распространения своего проекта «Шпаргалка Windows API». Как вы знаете один из томов (объекты user и gdi) распространялся на платной основе. Я решил сделать его открытым. Теперь все тома данного проекта распространяются абсолютно бесплатно.
Поскольку тома с течением времени будут меняться, для них вводится система версий. Версия каждого тома обозначается датой его последнего изменения. Она указывается на титульном листе тома чуть ниже обложки. Это некрасивое решение, но ничего лучше я пока не придумал. О выходе новых версий будет сообщаться в блоге.
Я не могу обещать, что новые версии будут выходить часто. Но и совсем забрасывать его я не буду.
Так что следите за новостями блога.
Компиляторы gcc и g++
Про компилятор gcc слышали наверное все. Это стандартный компилятор C/C++ в Linux. А вот его «коллега» g++ известен меньше. Читать полностью →
О важности префикса «\\\\?\\\\»
В одном из своих прошлых постов я писал о получении списка доступных COM портов на основе информации в реестре. Порты там представлены в виде строк «COM1», «COM2» и т.д. В принципе ничто не мешает передавать их в таком виде в функцию CreateFile для открытия. Однако для большей надежности я советую добавлять к ним префикс «\\\\?\\\\». Зачем? Читать полностью →
Функции printf, wprintf и _tprintf
В языке C/C++ существует два типа символов: обычный char и широкий wchar_t. Для каждого из них предусмотрена своя версия функции форматированного вывода. Для char это printf, а для wchar_t – wprintf. Но со временем понадобился третий вариант этой функции. Читать полностью →
Получение списка доступных COM портов
При программировании COM портов полезно иметь возможность получать список доступных портов на компьютере. Эта задача встречается настолько часто, что я решил затронуть ее в своем блоге. Читать полностью →
Ошибка 0xC000007B и смешение кода
Сравнительно недавно я работал над одной небольшой программой. Она была предельно простой (проверяла работу функции в подгружаемой библиотеке). Программа нормально компилировалась (даже без предупреждений), но при ее запуске выдавалось сообщение об ошибке 0xC000007B. Читать полностью →
Delphi неправильно передает пустые строки в технологии COM
Работая над одной программой, я заметил ошибку. Первоначально я решил, что это ошибка сервера, но, переписав пример на другой язык программирования, я понял, что сервер тут ни при чем. Читать полностью →
Обновленный класс TEventThread
В позапрошлом посте я подробно описал класс TEventThread, реализующий управление потоком с помощью функции PulseEvent. Пришло время немного доработать этот класс. Читать полностью →
Полемика о времени жизни объекта
В своей предыдущей статье я представил алгоритм использования функции PulseEvent в качестве спускового крючка. Такой подход предполагает, что исполнительный поток создается во время старта программы и уничтожается только тогда, когда основная программа завершает свою работу. С таким подходом могут не все согласиться. Читать полностью →