IFDEBUG
4 отговора
93 прегледа
IFDEBUG
Здравейте,
Понякога в пограмите ми (Delphi 6) се налага да се изпълнява или не кода на в зависимост от това дали в момента дебъгвам или ползвам exe-то.
Въпроса ми е как да детерменирам дали съм в дебъг режим. Ако не се лъжа мисля, че бях срещял някъде директива IFDEBUG или нещо подобно. Ако някой има идея как се използва, моля да драсне едно примерче за което предварително благодаря.
Понякога в пограмите ми (Delphi 6) се налага да се изпълнява или не кода на в зависимост от това дали в момента дебъгвам или ползвам exe-то.
Въпроса ми е как да детерменирам дали съм в дебъг режим. Ако не се лъжа мисля, че бях срещял някъде директива IFDEBUG или нещо подобно. Ако някой има идея как се използва, моля да драсне едно примерче за което предварително благодаря.
Всъщност IFDEF :)
Всъщност директивата е IFDEF. Използва се по следния начин:
Кодът между двете директиви ще се игнорира от компилатора, освен ако не е дефиниран DEBUG (това става например от Project -> Options -> Directories/Conditionals или пък с директивата DEFINE). Забележи, че това става още по време накомпилация, а не по време на изпълнението на програмата.
Не е задължително условието да ти се казва DEBUG - можеш да си го кръстиш както искаш.
...
...
DoSomething;
{$IFDEF DEBUG}
DebugMessage('some message');
{$ENDIF}
DoSomethingElse;
...
...
Кодът между двете директиви ще се игнорира от компилатора, освен ако не е дефиниран DEBUG (това става например от Project -> Options -> Directories/Conditionals или пък с директивата DEFINE). Забележи, че това става още по време накомпилация, а не по време на изпълнението на програмата.
Не е задължително условието да ти се казва DEBUG - можеш да си го кръстиш както искаш.
Re: IFDEBUG
Като поясни по-горе човека + едно допълнеие.
От менюто:
Project/Options -
tab Directories/Conditionals
секция:
Conditional Defines
Не забрявай че директивата влиза в дейстие при промяна само след BUILD!
Директивите може да са няколко на брой.
Вместо през GUI-то на Делфи, може да ги добавиш и отделен файл който да се include-не в прокта ти - например Defs.inc
Поздрави.
От менюто:
Project/Options -
tab Directories/Conditionals
секция:
Conditional Defines
Не забрявай че директивата влиза в дейстие при промяна само след BUILD!
Директивите може да са няколко на брой.
Вместо през GUI-то на Делфи, може да ги добавиш и отделен файл който да се include-не в прокта ти - например Defs.inc
Поздрави.
Re: IFDEBUG
...и още едно допълнение:
Като трети вариант може да се използва и
чрез което "DebugMessage()" ще се изпълни само ако си включил опцията "Debug Information" в Project -> Options -> Compiler.
Споменавам го само за пълнота - нито ми харесва, нито го използвам. Предпочитам посочения в предишните отговори вариант, защото позволява по-голяма гъвкавост и независимост от компилатора.
Като трети вариант може да се използва и
...
...
DoSomething;
{$IFOPT D+}
DebugMessage('some message');
{$ENDIF}
DoSomethingElse;
...
...
чрез което "DebugMessage()" ще се изпълни само ако си включил опцията "Debug Information" в Project -> Options -> Compiler.
Споменавам го само за пълнота - нито ми харесва, нито го използвам. Предпочитам посочения в предишните отговори вариант, защото позволява по-голяма гъвкавост и независимост от компилатора.