| 
| 
 | Вопрос # 38/ вопрос открыт / | 
 |  Есть ли какая-то функция (может, не совсем функция), которая бы возвращала номер строки, в которой она написана?
 Showmessage('Текущая строка ' + intTOStr(эта функция)')
 
|  |   Вопрос задал: mvp (статус: 4-ый класс)Вопрос отправлен: 14 июня 2006, 16:51
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Alexander A. Gribanov Подобной функции что-то не припомню, но может чем-то поможет Assert() ? 
|  | Ответ отправил: Alexander A. Gribanov (статус: 2-ой класс)Время отправки: 14 июня 2006, 18:06
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 3; последнее сообщение — 16 июня 2006, 20:21; участников в обсуждении: 2. 
|   | mvp (статус: 4-ый класс), 16 июня 2006, 17:30 [#1]:Как-раз то, что нужно! Спасибо |  
|   | DNK (статус: Студент), 16 июня 2006, 20:04 [#2]:Что-то глючит. Почему-то не могу ответить на вопрос. Говорит: Вопроса не существует. Пускай Адрей разбирается. 
 Конкретней:
 
 Есть стандартная процедура:
 
 procedure Assert(expr : Boolean [; const msg: string]);
 
 Обработчик по умалчиванию вызывает программное исключение (EAssertionFailed, увидите веселое окошко с крестиком), с которым передается имя модуля, номер строки, адрес места откуда была вызвана прецедура.
 Однако если прописать по адресу AssertErrorProc свой обработчик, то ситуацию можно изменить.
 Программа должна обязательно быть откомпилированна с включенным флажком Project Options -> Compiller -> Assertions или в коде должна стоять директива $ASSERTIONS ON ($C +)
 
 
 unit Unit1;
 
 interface
 
 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;
 
 type
 TForm1 = class(TForm)
 Button1: TButton;
 procedure Button1Click(Sender: TObject);
 procedure FormCreate(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
 
 var
 Form1: TForm1;
 
 implementation
 
 {$R *.dfm}
 
 procedure AssertErrorHandler(const Message, Filename: string;  LineNumber: Integer; ErrorAddr: Pointer);
 begin
 ShowMessage(Format('%s'#13#13'(Модуль: %s,'#13'линия %d,'#13'адрес $%x)',
 [Message, ExtractFileName(Filename), LineNumber, Pred(Integer(ErrorAddr))]));
 end;
 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 ShowMessage('Приготовиться!');
 Assert(false, 'Assert Message!!!');
 ShowMessage('Ok!');
 end;
 
 procedure TForm1.FormCreate(Sender: TObject);
 begin
 AssertErrorProc := @AssertErrorHandler
 end;
 
 end.
 "Digital Networked Knight" |  
|   | mvp (статус: 4-ый класс), 16 июня 2006, 20:21 [#3]:То, что нужно - спасибо |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |