Вниз
Скачать: CL | DM;

Указатель на функцию: как проверить его значение, а не вызвать   Найти похожие ветки 

← →
KSergey ©   (2003-07-04 10:17) [0]

Есть такие кусочки кода:

type
TSetPermitLogin = procedure {SetPermitLogin}; stdcall;
...
var
SetPermitLogin: TSetPermitLogin;
...
if SetPermitLogin <> nil then

Вот можно ли в последней строке как-то извернуться и объяснить, что я не хочу здесь вызывать пороцедуру? Ф-цию Assigned не рассматриваем - модуля system нет и не надо. Можно конечно свою написать, в которой агрумент просто проверять, но нельзя ли как-то это прямо в if упихнуть? А то сейчас использую промежуточный указатель...


← →
Radionov Alexey ©   (2003-07-04 10:19) [1]

...
if @SetPermitLogin <> nil then


← →
Юрий Зотов ©   (2003-07-04 10:59) [2]

> модуля system нет и не надо

А вот это вряд ли. Он все равно есть. Так что можете спокойно использовать Assigned.


← →
KSergey ©   (2003-07-04 11:57) [3]

> Юрий Зотов © (04.07.03 10:59)
> А вот это вряд ли. Он все равно есть.

Ух ты! И правда.. Вот бы не подумал. ;) Спасибо. (так вот откуда минимальный размер - 16кБ по всей видимости?)

> Radionov Alexey © (04.07.03 10:19)
> if @SetPermitLogin <> nil then

Растолкуйте для меня, пожалуйста, что означает сия конструкция. Вернее так: а что вообще-то хранится в переменной SetPermitLogin? Я так думал, что это просто типизированный указатель на ф-цию, но раз к нему можно применить операцию "дай адрес" - получается, что я ошибаюсь? Т.е. это как бы некий объект получается (не в терминах ООП, разумеется), адрес которого и запрашиваем? Как-то не понятно. Неужели в переменной SetPermitLogin хранится не просто адрес функции? А если адрес, то получается что адрес адреса запрашиваем, что совсем уже не то должно получаться...

Растолкуйте, пжлст, кому не лень.


← →
Radionov Alexey ©   (2003-07-04 12:03) [4]

>KSergey © (04.07.03 11:57)
Синтаксическая особенность по поводу "что я не хочу здесь вызывать пороцедуру"


← →
KSergey ©   (2003-07-04 14:28) [5]

> Radionov Alexey © (04.07.03 12:03)

Ничего себе, "особенность".... 8\



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.017 c
14-55713
Дмитрий К.К.
2003-07-02 06:10
2003.07.17
Именинники 2 июля


14-55714
Мазут Береговой
2003-07-01 19:03
2003.07.17
Притча от Мазута. Быль. 20 век.


14-55741
VEG
2003-07-02 21:51
2003.07.17
Большие файлы в Билдере:D


14-55828
Delphi 5.01
2003-06-28 09:14
2003.07.17
Word Document


1-55599
tm
2003-07-03 12:40
2003.07.17
Исчезает из формы StatusBar, при разв. окна и обрат. опер.




   Наверх