|
Навигация
|
Главная » Delphi WriteLn для C++Builder (исходники)Источник: CppBuilder Kent Reisdorph Содержание
ВведениеПрограммисты Delphi уже в течение долгого времени используют функцию WriteLn в качестве отладочного инструмента. Текст, переданный во WriteLn, направляется в консольное окно, превращая его в лог-файл реального времени. Используя подобный подход, вы можете отслеживать поведение своей программы в секциях кода, критичных с точки зрения времени, где обычные точки останова (breakpoints) не будут работать. К сожалению, C++Builder не включает в себя функцию WriteLn. Тем не менее, нет никаких причин для того, чтобы не реализовать ее самостоятельно. В этой статье я объясню вам, как это сделать. Как часть объяснения, мы рассмотрим также функции AllocConsole, GetStdHandle и WriteConsole Windows API.WriteLn по-дельфийскиИспользование функции WriteLn в Delphi состоит из двух шагов. Сначала вы выделяете консольное окно для вашего приложения, а затем уже вызываете WriteLn. Код выглядит примерно следующим образом:
После того, как приложению выделено окно консоли, функция WriteLn выводит в него текст. Система простая, но чрезвычайно эффективная. Фактически, в некоторых ситуациях при отладке достаточно только ее. Консольный вывод в C++У C++Builder есть инструменты отладки, похожие на WriteLn. Диагностические макросы TRACE и WARN, а также функция OutputDebugString делают, в первом приближении, то же самое, что и функция WriteLn. Но их использование, тем не менее, страдает одним недостатком: их вывод направляется в log-файл, который не обновляется до тех пор, пока приложение не задержится на точке останова, или пока оно не завершится. Это ограничивает использование вышеупомянутых инструментов в некоторых ситуациях.Но хорошие новости, кроме того, что WriteLn легко реализовать в C++Builder, состоят также в том, что вы можете включить в ее реализацию непосредственно функции управления консолью, что, в итоге, сделает использование вашей собственной функции WriteLn намного проще. WriteLn требует дескриптор выходного буфера для консольного окна, который вы можете получить посредством функции GetStdHandle. В целом это все будет выглядеть примерно так:
Как только вы получили дескриптор стандартного выходного буфера, вы можете вызвать функцию WriteConsole для записи текста в консольное окно. Первый параметр функции WriteConsole представляет собой дескриптор стандартного буфера вывода, второй параметр - текст, который отправляется в консоль, третий параметр - количество выводимых символов. WriteLn для C++BuilderТеперь, зная все необходимое, вы можете создать-таки вашу собственную функцию WriteLn. Для начала, давайте объявим ее прототип. Он очень прост:
ПримерЛистинг ниже является программой, использующей функцию WriteLn. Это главная форма с одной кнопкой. Когда вы нажимаете на кнопку, цикл вызывает функцию WriteLn для вывода двадцати строк текста в консольное окно.
ЗаключениеФункция WriteLn может быть замечательным инструментом отладки. Вы можете нечасто ее использовать, но, когда она нужна на самом деле, то ей нет замены.Embarcadero ToolCloud облегчает развертывание, управление и доступ к инструментальному ПО. Урок 1. Инструменты от Borland. Инструменты для работы с базами данных, поставляемые вместе с Delphi.. Cтерео изображения в Delphi. Выпущен релиз FastReport FMX. Построение графиков. Главная » Delphi |
© 2024 Team.Furia.Ru.
Частичное копирование материалов разрешено. |