Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.068 c
3-1087039239
Uran
2004-06-12 15:20
2004.07.11
Хранимая процедура и BLOB


3-1085541840
drew
2004-05-26 07:24
2004.07.11
Работа непостредственно с SQL-server ом


4-1085815460
R
2004-05-29 11:24
2004.07.11
Определение текста items ListView чужого окна


1-1087470362
COOLer
2004-06-17 15:06
2004.07.11
чтение word DOC формата


1-1088595153
Wadim
2004-06-30 15:32
2004.07.11
Приближение просмотра картинки в программе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский