Функции printf, wprintf и _tprintf

В языке C/C++ существует два типа символов: обычный char и широкий wchar_t. Для каждого из них предусмотрена своя версия функции форматированного вывода. Для char это printf, а для wchar_twprintf. Но со временем понадобился третий вариант этой функции. Продолжить чтение →

Получение списка доступных COM портов

При программировании COM портов полезно иметь возможность получать список доступных портов на компьютере. Эта задача встречается настолько часто, что я решил затронуть ее в своем блоге. Продолжить чтение →

Ошибка 0xC000007B и смешение кода

Сравнительно недавно я работал над одной небольшой программой. Она была предельно простой (проверяла работу функции в подгружаемой библиотеке). Программа нормально компилировалась (даже без предупреждений), но при ее запуске выдавалось сообщение об ошибке 0xC000007B. Продолжить чтение →

Delphi неправильно передает пустые строки в технологии COM

Работая над одной программой, я заметил ошибку. Первоначально я решил, что это ошибка сервера, но, переписав пример на другой язык программирования, я понял, что сервер тут ни при чем. Продолжить чтение →

Полемика о времени жизни объекта

В своей предыдущей статье я представил алгоритм использования функции PulseEvent в качестве спускового крючка. Такой подход предполагает, что исполнительный поток создается во время старта программы и уничтожается только тогда, когда основная программа завершает свою работу. С таким подходом могут не все согласиться. Продолжить чтение →

Функция PulseEvent в роли спускового крючка

Функция PulseEvent предназначена для кратковременного перевода объекта событие в свободное состояние с его последующим возвратом в занятое состояние. Обычно в литературе по Windows API ей уделяется мало внимания. Тем не менее, её можно использовать в качестве спускового крючка при управлении потоком. О том, как это сделать, я сегодня и расскажу. Продолжить чтение →

«Fatal: Expected file name» простое решение этой проблемы

Все, кто работал с C++ Builder, наверняка сталкивались с этой проблемой. Когда при компиляции программы выдается ошибка с текстом: «[Linker Fatal Error] Fatal: Expected a file name:». Всё, никакой дополнительной информации нет. Только эта строка. В результате чего пользователи вынуждены гадать: что делать и куда копать.

На самом деле в большинстве случаев эта проблема решается очень просто.

Продолжить чтение →

Проблема с отображением содержимого chm файла и ее решение

Сегодня обнаружил, что современные версии операционной системы Windows (начиная с Windows Vista) в целях нашей с вами защиты не отображают содержимое chm файлов, скачанных из Интернета. К счастью эту особенность поведения легко поправить.

Продолжить чтение →

Странное поведение функции ClearCommError

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

Продолжить чтение →