Подтвердить что ты не робот

Как я могу написать в консольное окно для отладки?

Можно ли отобразить результат цикла в окне консоли в приложении VCL для целей отладки?

4b9b3361

Ответ 1

В Windows самый простой способ вывода информации об отладке - использовать OutputDebugString(), а затем использовать приложение, способное получить этот вывод. Средство просмотра событий в самой IDE Delphi может получить этот вход или вы можете использовать приложение DebugView из SysInternals получить выход в системе, у которой не установлена ​​IDE. AFAIK, у GExperts тоже есть аналогичный инструмент. Это из-за того, что приложение GUI по умолчанию не имеет консоли для записи вывода, в противном случае вам нужно создать ее (см. Ответ Gerry).

Одним из преимуществ OutputDebugString() является то, что приложение будет работать без проблем, даже если вызов вставляется в сборку выпуска (или если он умышленно ушел), но будьте осторожны, чтобы не выводить конфиденциальную информацию, потому что они могут быть прочитаны используя один из вышеперечисленных инструментов.

Вы также можете создать специальную форму (то есть с элементом управления записью) и вывод маршрута там.

Существуют также расширенные средства ведения журнала, такие как SmartInspect, CodeSite и другие.

Ответ 2

Самый простой способ - скомпилировать в качестве консольного приложения, но верните нормальный код среды приложения обратно в dpr.

program Project2;

{$APPTYPE CONSOLE}

uses
  Forms,
  SysUtils,
  Unit1 in 'Unit1.pas' {Form1};

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  writeln('Hello, World!');
  Application.Run;
end.

Несколько более сложным способом является использование вызова AllocConsole Windows API:

program Project2;

uses
  Forms,
  SysUtils,
  Windows,
  Unit1 in 'Unit1.pas' {Form1};

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  AllocConsole;
  writeln('Hello, World!');
  Application.Run;
end.

Этот метод имеет (обычно) недостаток создания новой консоли, если вы вызываете из командной строки. Из памяти, получающей перенаправление на работу, требуется еще один код. Преимущество заключается в том, что вы можете решить распределить консоль во время выполнения, а не компилировать время.

Ответ 3

У Delphi есть опция для этого, проверьте "Создать консольное приложение" в параметрах компоновщика для проекта. Стандартный ввод-вывод будет направлен в окно консоли, которое будет сопровождать ваше приложение GUI. Затем вы можете использовать Writeln и т.д., Как обычно.

Прочитайте Output (или Input) из документов:

Программы Delphi имеют стандартный вывод файл, если они связаны как консоль приложения.

Ответ 4

Если вы написали консольное приложение, вы можете попробовать функцию OutputDebugString в консольном приложении (я не пытался).

Или вы можете записать вывод консольного приложения, например, в Захват вывода из окна DOS (команда/консоль).

Кроме того, вы можете проверить "Консольные классы запуска приложений" . Я использую эти классы. Я думаю, что они великолепны.