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

Вниз

Можно ли внутри функции получить её имя?   Найти похожие ветки 

 
Ega23 ©   (2004-06-23 11:16) [0]

Т.е. пример:

procedure TEditItem.SetFDefaultValue(const Value: Variant);
begin
inherited;
try
 FEdit.Text:=String(Value);
except
 raise DPException.Create("TEditItem.SetFDefaultValue");
end;
end;

А вот как-нибудь без такой "TEditItem.SetFDefaultValue" строки обойтись можно? Что-нить, типа Self. ?


 
clickmaker ©   (2004-06-23 11:18) [1]

TObject.MethodName() разве что


 
Тимохов ©   (2004-06-23 11:18) [2]

в общем случае никак


 
Ega23 ©   (2004-06-23 11:22) [3]

TObject.MethodName()

Попробую, спасибо.


 
Digitman ©   (2004-06-23 11:22) [4]


> Можно ли внутри функции получить её имя?


если функция - это не просто функция, а функциональный метод объекта, и объявление этого метода сделано в секции published декларации класса этого объекта, то инф-ция о имени и адресе этогго метода будет включена в таблицу типов времени выполнения (RTTI) и программно доступна в ран-тайм


 
Ega23 ©   (2004-06-23 11:34) [5]

Digitman ©   (23.06.04 11:22) [4]

С published понятно, мне бы private...  :о)


 
Digitman ©   (2004-06-23 11:37) [6]


> Ega23 ©   (23.06.04 11:34) [5]
> С published понятно, мне бы private


имена идентификаторов секции private компилятор не включает ни в какие ран-тайм-таблицы


 
Ega23 ©   (2004-06-23 11:38) [7]

Жаль...


 
Тимохов ©   (2004-06-23 11:40) [8]

пиши как в исхонов вопросе - явно указывай функцию.
если надо я так и делаю, в свое время других методов я не нашел.


 
Ega23 ©   (2004-06-23 11:44) [9]

пиши как в исхонов вопросе - явно указывай функцию.

Просто так на уровень предка можно было бы очень много вынести, а так всё у каждого потомка расписывать придётся.

ОК, всем спасибо.


 
Digitman ©   (2004-06-23 11:55) [10]


> Ega23 ©   (23.06.04 11:44) [9]


> на уровень предка можно было бы очень много вынести, а так
> всё у каждого потомка расписывать придётся


не оч понятно, для чего здесь нужно имя метода

ты хочешь в потомке вызвать приватный метод предка ?
ну так перенеси метод предка из private в protected и сделай виртуальным ! всех делов ..


 
Ega23 ©   (2004-06-23 13:36) [11]

Я хочу с помощью текста эксепшена получать место ошибки.


 
Sandman25 ©   (2004-06-23 13:42) [12]

[11] Ega23 ©   (23.06.04 13:36)

Type
TMyProc = procedure (var Param) of object;

procedure DoWithException(MyProc: TMyProc; var Param; const ExceptionPrefix: String);
begin
 try
   MyProc(Param);
 except
   on E: Exception do
   begin
     E.message := ExceptionPrefix + E.message;
     raise;
   end;
end;


 
Digitman ©   (2004-06-23 13:59) [13]


> Ega23 ©   (23.06.04 13:36) [11]


в пакете Инди есть соответствующая утилита, ведущая протокол вызовов


 
Ega23 ©   (2004-06-23 14:13) [14]

Инди - What is it?


 
Тимохов ©   (2004-06-23 14:19) [15]


> Ega23 ©   (23.06.04 14:13) [14]

this is commonly known delphi package library


 
evvcom ©   (2004-06-23 14:25) [16]

А procedure Assert не подойдет?


 
Ega23 ©   (2004-06-23 14:29) [17]

Тимохов ©   (23.06.04 14:19) [15]

Это которая в D6 - D7 отдельной вкладкой идёт?


 
Тимохов ©   (2004-06-23 14:30) [18]

assert всем хороша, за исключением того, что компилятор дельфи не расценивает ее как возбуждение исключения и дает предупреждение в след. случае:

function a(param: integer);
begin
  if param = 0 then result := ... else assert("error");
end;

а вот здесь не будет warning

function a(param: integer);
begin
  if param = 0 then result := ... else raise exception.create("error");
end;


 
Digitman ©   (2004-06-23 14:30) [19]


> evvcom ©   (23.06.04 14:25) [16]
> А procedure Assert не подойдет?


нет, вряд ли ..

автор же хочет, imho, свою лажу отслеживать в ран-тайм автоматически, без модификации программы на предмет размещения отладочных операторов в "узких" местах ...


 
Тимохов ©   (2004-06-23 14:31) [20]


> Ega23 ©   (23.06.04 14:29) [17]

знаешь, я сам не знаю :))) т.к. никогда не пользовался indy, но знаю, что это общеизвествная библиотека, которой очень многие пользуются :)



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

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

Наверх




Память: 0.51 MB
Время: 0.058 c
14-1087761613
Катя
2004-06-21 00:00
2004.07.11
Где гостевая? Была вроде


14-1087949054
jack128
2004-06-23 04:04
2004.07.11
Как часто вы работаете по ночам?


14-1087893791
X9
2004-06-22 12:43
2004.07.11
Редактирование HLP-файлов


3-1087452298
alsov
2004-06-17 10:04
2004.07.11
Запрос в виде цикла


6-1084442368
vlgrig1961
2004-05-13 13:59
2004.07.11
Как отправить SMS по GSM модему