Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];

Вниз

Как в дельфи сделать такое   Найти похожие ветки 

 
Виктор007   (2007-10-30 22:36) [0]

Не могу найти как пользоваться макро определениями...

#if DBG
#define DPRINT DbgPrint
#else
#define DPRINT
#endif


 
homm ©   (2007-10-30 22:40) [1]

{IFDEF } + F1, дальше сам найдешь…


 
homm ©   (2007-10-30 22:40) [2]

> [1] homm ©   (30.10.07 22:40)

{$IFDEF DBG}


 
Reindeer Moss Eater ©   (2007-10-30 22:40) [3]

ищи под кнопкой F1


 
Виктор007   (2007-10-30 22:47) [4]

Не, про IFDEF я знаю. Меня интересует как можно переопределять.

Например в отладочной версии я везде где надо выводить сообщения вставляю такие конструкции:

 {$IFDEF DBG}
 LogFile("-= START PROGRAM: %s =-", [paramstr(0)]);
 {$ENDIF}

А хотелось бы описать макрос

#if DBG
#define DPRINT LogFile
#else
#define DPRINT
#endif

И потом в программе просто вставлять такие строки:
 DPRINT("-= START PROGRAM: %s =-", [paramstr(0)]);


 
Reindeer Moss Eater ©   (2007-10-30 22:50) [5]

Для этого нужен препроцессор, а его нету.


 
homm ©   (2007-10-30 22:52) [6]

type
 TLogFile = procedure (...);
var
DPRINT: TLogFile;

procedure emptyLog(...);
procedure LogFile(...);
……
{$IFDEF DBG}
DPRINT := LogFile;
{$ELSE}
DPRINT := emptyLog;
{$ENDIF}


 
homm ©   (2007-10-30 22:53) [7]

> [5] Reindeer Moss Eater ©   (30.10.07 22:50)

{$IFDEF DBG} — это и есть препроцессор, только функцианал разлечается не в лучшую сторону по сравнению с сишным. Зато Дельфи умная :)


 
Reindeer Moss Eater ©   (2007-10-30 22:55) [8]

Это не препроцессор, это компилятор понимает директивы компилятора.


 
Reindeer Moss Eater ©   (2007-10-30 22:58) [9]

Я под препроцессором понимаю нечто, работающее с исходником до того, как он будет скормлен компилятору.


 
Виктор007   (2007-10-30 22:59) [10]

Понятно, жаль. А можно ли настроить проект в дельфи, чтобы перед компиляцией вызывался свой препроцессор? Именно не батником компилировать, а нажаль в дельфе F9, она вызвала сначала препроцессор, а потом скомпилировала?


 
homm ©   (2007-10-30 23:02) [11]

> [10] Виктор007   (30.10.07 22:59)
> Понятно, жаль.

Что тебе понятно? Что именно жаль? Смотрел ли ты в [6]? Чесал ли репу?


 
Вудзрш   (2007-10-30 23:02) [12]

уходи и не порти неше делфи своими сишными вредными привычками


 
Виктор007   (2007-10-30 23:17) [13]

> homm ©
Так быстро ответили что я не заметил некоторых ответов...

Я так и понял. Просто подумал что неплохо было бы чтобы в результирующий exe файл не компилировались отладочные сообщения и вызов функций
emptyLog(...);

Ведь дельфи в итоге сделает примерно так
asm
 mov eax, DPRINT
 call [eax]
end

пусть и emptylog ничего не сохраняет, но её вызов будет осуществлен.

> Вудзрш   (30.10.07 23:02) [12]
Ничего я не порчу, просто интересуюсь.

P.S. а в Delphi 2007 ничего нового по этому поводу не ввели?


 
homm ©   (2007-10-30 23:18) [14]

> P.S. а в Delphi 2007 ничего нового по этому поводу не ввели?

Можно emptyLog объявить как inline.


 
homm ©   (2007-10-30 23:22) [15]

Можно еше в любой версии assert использовать


 
DVM ©   (2007-10-30 23:46) [16]


> homm ©   (30.10.07 22:53) [7]
> > [5] Reindeer Moss Eater ©   (30.10.07 22:50)
>
> {$IFDEF DBG} — это и есть препроцессор,

Это не препроцессор. Компилятор в делфи однопроходный, а препроцессинг это еще один проход как минимум. Зато Делфи компилирует быстро.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.205 c
3-1184307277
ambhtr
2007-07-13 10:14
2007.11.25
DBGrid -> OnTitleClick


15-1193080753
9899100
2007-10-22 23:19
2007.11.25
ктонибудь кто разбирается в схемотехнике!!! помогите!!!


2-1193694632
Nikola
2007-10-30 00:50
2007.11.25
Фильтры ADOTable


2-1193993515
vl
2007-11-02 11:51
2007.11.25
Добавление данных в таблицу


2-1193907869
barakuda
2007-11-01 12:04
2007.11.25
Генератор случайных чисел...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский