![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли в Делфи определить номер строки PAS-файла?
Japp © (2004-12-22 19:47:00)Задача - получить строку содержащую номер текущей строки обрабатываемой компилятором. Так же как работает макрос __LINE__ в С (Borland C++ 5 точно есть для других - не знаю).
GuAV (2004-12-22 23:46:00) [1]
procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
begin
if E is EAssertionFailed then
ShowMessage('По секрету скажу тихо-тихо:' + sLineBreak +
E.Message)
else
Application.ShowException(E);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Assert(False); // Assertion
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Tag := PInteger(nil)^; // Access Violation
end;
Japp (2004-12-22 22:13:00) [2]Тогда надо еще и тру-эксцепт оборачивать в $IFOPT C+...
получается достаточно громоздко...ну да ладно фиг с ним...
MBo (2004-12-22 22:07:00) [3]ну так оберни в try-except и будет по-тихому
Japp (2004-12-22 21:56:00) [4]Зачем?
Дык, просто хотелось, залогировать Assert-ы "по-тихому" в программе, которая крутится в фоне... Дабы не шокировать заказчика лишний раз... :)
Привык, просто, в C++ получать сразу место Assert в исходниках.
Вобщем-то можно и адрес сохранять - потом по мапу вычислить..
JCL - не годиCа - пользуюсь KOL+MCK
MBo (2004-12-22 21:48:00) [5]>Japp (22.12.04 21:38) [6]
Ты так и не сказал, зачем тебе это нужно.
Может, map-файлы сгодятся, может, какие-то средства, имеющиеся в библиотеке JCL.
MBo (2004-12-22 21:45:00) [6]VMcL © (22.12.04 21:35) [4]
procedure TForm1.Button1Click(Sender: TObject);
begin
try
Assert(False);
except
on exc: exception do
Caption := exc.Message;
end;
end;
извлечь номер строки при необходимости нетрудно
Japp (2004-12-22 21:38:00) [7]Самому - неинтересно - вот если бы компилятор заставить это делать.
VMcL (2004-12-22 21:37:00) [8]>> MBo © (22.12.04 21:22) [2]
>> VMcL © (22.12.04 21:35) [4]
Oops, sorry. Assert сам номер строки и имя файла показывает. Савсэм склэроз замучал, да?
VMcL (2004-12-22 21:35:00) [9]>> MBo © (22.12.04 21:22) [2]
Ну дык, в Assert'е было бы неплохо номер строки указывать :-)
Japp (2004-12-22 21:34:00) [10]>MBo © (22.12.04 21:22) [2]
>Assert не устроит?
Вобщем-то устроит, если бы перехватить и перенаправить выдачу сообщения об Assert-e в файл...
MBo (2004-12-22 21:22:00) [11]Для чего это нужно?
Assert не устроит?
VMcL (2004-12-22 20:58:00) [12]> Можно ли в Делфи определить номер строки PAS-файла?
AFAIK, нет. Правда, может в 2005-м есть.