Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Debug.Print, Есть ли аналог в Delphi? 
V
    Опции темы
Mephisto
Дата 16.11.2006, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Если аналог в Delphi функции VB:
Код
Debug.Print

Она в режиме Debug выводит строки в дебагере. smile 
PM   Вверх
Romkin
Дата 16.11.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 14.11.2006
Где: Москва

Репутация: 2
Всего: 5



Есть API, от природы smile
{ Выводимые сообщения можно просматривать из:
   - Delphi (View\Debug Windows\Event Log)
   - Программой DebugView  }
procedure Debug(Text: string);
begin
  OutputDebugString(PChar(Text + #13#10));
end;
В GExperts тоже есть средства....
PM ICQ   Вверх
Mephisto
Дата 16.11.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Прикольно.
Спасибо.
 smile 
PM   Вверх
Bose
Дата 16.11.2006, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Mephisto, вместе с gExperts идёт unit DbugIntf.pas и утилитка gExperts Debug Window. Подклчюив модуль Dbugintf.pas к исходникам можно будет пользоваться процедурой:
Код

Senddebug(aText:string);

и текст aText будет показан в окне gExperts Debug Window. Если окно не было запущено - оно запустится(при включенной IDE). Я ползуюсь этой фичей. А раньше, пока не знал, у меня во всех апликациях была форма frmDebug с публичным методом Print  smile  smile который отображал строку в Memo этой формы smile 
PM MAIL WWW Skype   Вверх
popolzen
Дата 17.11.2006, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 19.3.2006
Где: Улан-Удэ

Репутация: 2
Всего: 2



Проблема решается без использования сторонних компонентов:

1. Project Options (Ctrl+Shift+F11) -> Linker -> EXE and DLL options -> Generate console application (установить флаг)
Если флаг выставлен, то компилятор генерирует консольное приложение {$APPTYPE CONSOLE},
в противном случае генерируется приложение с графическим интерфейсом {$APPTYPE GUI}
2. В коде пишем
Код

{$IFDEF CONSOLE}
  {$DEFINE DEBUG}
{$ENDIF}

3. Используем
Код

  {$IFDEF DEBUG}
    Writeln(Message);
  {$ENDIF}

точно так же, как Debug.Print
4. Как только отдебажили код, снимаем флаг Project Options -> Linker -> EXE and DLL options -> Generate console application и компилятор генерирует приложение без текстовой консоли

В итоге код для дебага выглядит примерно так:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

{$IFDEF CONSOLE}
  {$DEFINE DEBUG}
{$ENDIF}


type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  {$IFDEF DEBUG}
    Writeln((Sender as TButton).Name);
  {$ENDIF}
end;

end.


P.S. Если что-то непонятно, смотри в help'е "conditional directives".
PM MAIL ICQ   Вверх
Mephisto
Дата 17.11.2006, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



popolzen, полезно!  smile 
PM   Вверх
bems
Дата 17.11.2006, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



popolzen, очень, очень плохо. не делай так


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Mephisto
Дата 17.11.2006, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Цитата(bems @  17.11.2006,  10:44 Найти цитируемый пост)
popolzen, очень, очень плохо. не делай так 

 А проблема-то в чем?
PM   Вверх
bems
Дата 17.11.2006, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Mephisto, в том что для отладки кода приходиться его изменять. Если штатные средства дебагера применить нельзя, то OutputDebugString, но это максимум, что можно себе позволить. Консоль - это очень плохой стиль и создает проблемы (иногда неочевидные). Я сам так делал. Больше не хочу smile 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Mephisto
Дата 17.11.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Цитата(bems @  17.11.2006,  11:34 Найти цитируемый пост)
OutputDebugString,

Этот метод действительно оптимальный для данной задачи. Я не спорю!  smile 
PM   Вверх
popolzen
Дата 17.11.2006, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 19.3.2006
Где: Улан-Удэ

Репутация: 2
Всего: 2



bems, не буду спорить, но у меня никогда не возникало таких проблем.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0496 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.