Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли в Делфи определить номер строки 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-м есть.


Наверх

Титульная страница Поиск, карта сайта Написать письмо