Форум: "Основная";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];
ВнизМожно ли в Делфи определить номер строки 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.032 c