В языке C/C++ существует два типа символов: обычный char и широкий wchar_t. Для каждого из них предусмотрена своя версия функции форматированного вывода. Для char это printf, а для wchar_t – wprintf. Но со временем понадобился третий вариант этой функции. Продолжить чтение →
Получение списка доступных COM портов
При программировании COM портов полезно иметь возможность получать список доступных портов на компьютере. Эта задача встречается настолько часто, что я решил затронуть ее в своем блоге. Продолжить чтение →
Ошибка 0xC000007B и смешение кода
Сравнительно недавно я работал над одной небольшой программой. Она была предельно простой (проверяла работу функции в подгружаемой библиотеке). Программа нормально компилировалась (даже без предупреждений), но при ее запуске выдавалось сообщение об ошибке 0xC000007B. Продолжить чтение →
Delphi неправильно передает пустые строки в технологии COM
Работая над одной программой, я заметил ошибку. Первоначально я решил, что это ошибка сервера, но, переписав пример на другой язык программирования, я понял, что сервер тут ни при чем. Продолжить чтение →
Обновленный класс TEventThread
В позапрошлом посте я подробно описал класс TEventThread, реализующий управление потоком с помощью функции PulseEvent. Пришло время немного доработать этот класс. Продолжить чтение →
Полемика о времени жизни объекта
В своей предыдущей статье я представил алгоритм использования функции 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 порту принимаются данные. Вроде бы ничего сложного, но меня ждал подвох.
