Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.09;
Скачать: CL | DM;

Вниз

Можно ли в Делфи определить номер строки PAS-файла?   Найти похожие ветки 

 
Japp   (2004-12-22 19:47) [0]

Задача - получить строку содержащую номер текущей строки обрабатываемой компилятором. Так же как работает макрос __LINE__ в С (Borland C++ 5 точно есть для других - не знаю).


 
VMcL ©   (2004-12-22 20:58) [1]

>Можно ли в Делфи определить номер строки PAS-файла?

AFAIK, нет. Правда, может в 2005-м есть.


 
MBo ©   (2004-12-22 21:22) [2]

Для чего это нужно?
Assert не устроит?


 
Japp   (2004-12-22 21:34) [3]

>MBo ©   (22.12.04 21:22) [2]
>Assert не устроит?
Вобщем-то устроит, если бы перехватить и перенаправить выдачу сообщения об Assert-e в файл...


 
VMcL ©   (2004-12-22 21:35) [4]

>>MBo ©  (22.12.04 21:22) [2]

Ну дык, в Assert"е было бы неплохо номер строки указывать :-)


 
VMcL ©   (2004-12-22 21:37) [5]

>>MBo ©  (22.12.04 21:22) [2]
>>VMcL ©  (22.12.04 21:35) [4]

Oops, sorry. Assert сам номер строки и имя файла показывает. Савсэм склэроз замучал, да?


 
Japp   (2004-12-22 21:38) [6]

Самому - неинтересно - вот если бы компилятор заставить это делать.


 
MBo ©   (2004-12-22 21:45) [7]

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;

извлечь номер строки при необходимости нетрудно


 
MBo ©   (2004-12-22 21:48) [8]

>Japp   (22.12.04 21:38) [6]
Ты так и не сказал, зачем тебе это нужно.
Может, map-файлы сгодятся, может, какие-то средства, имеющиеся в библиотеке JCL.


 
Japp   (2004-12-22 21:56) [9]

Зачем?
Дык, просто хотелось, залогировать Assert-ы "по-тихому" в программе, которая крутится в фоне... Дабы не шокировать заказчика лишний раз... :)
Привык, просто, в C++ получать сразу место Assert в исходниках.
Вобщем-то можно и адрес сохранять - потом по мапу вычислить..
JCL - не годиCа - пользуюсь KOL+MCK


 
MBo ©   (2004-12-22 22:07) [10]

ну так оберни в try-except и будет по-тихому


 
Japp   (2004-12-22 22:13) [11]

Тогда надо еще и тру-эксцепт оборачивать в $IFOPT C+...
получается достаточно громоздко...ну да ладно фиг с ним...


 
GuAV ©   (2004-12-22 23:46) [12]

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;



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

Текущий архив: 2005.01.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
1-1103711338
runa
2004-12-22 13:28
2005.01.09
Как используется TAction


1-1103551001
Aleksandr.
2004-12-20 16:56
2005.01.09
Не понимаю, почему Tabs у PageControl неправильно отрисовываются!


14-1103618273
Роман
2004-12-21 11:37
2005.01.09
нужна разработка программы с БД


11-1084877331
mdw
2004-05-18 14:48
2005.01.09
Обновились компоненты mdvXXX


3-1102521427
DimonNew
2004-12-08 18:57
2005.01.09
DBCheckBox