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

Вниз

как узнать адрес процедуры?   Найти похожие ветки 

 
Delphist2   (2010-03-25 14:24) [0]

Поясню на примере:
for i:=0 to n do begin
if checkbox1.checked then proc1 else proc2;
//еще много кода
end;


Чтобы избежать этой проверки хотелось бы присвоить в переменную типа p: procedure адрес нужной процедуры таким образом: @p:= перед самим циклом. И тогда код будет выглядеть:

//здесь
if checkbox1.checked then @p:=... //здесь надо присвоить адрес proc1
else @p:=... //а здесь proc2. Только как это сделать?
for i:=0 to n do begin
p; //выполняем заранее выбраную процедуру
//еще много кода
end;


Процедуры не из dll а из самого модуля. Вопрос: что нужно записать после "@p:="?


 
Сергей М. ©   (2010-03-25 14:32) [1]

procedure Proc1;
begin
..
end;

procedure Proc2;
begin
..
end;

..
type
 TProc = procedure;

var
 p: TProc;

..

if .. then p := @proc1 else p := @proc2;
..

p;


 
Leonid Troyanovsky ©   (2010-03-25 19:04) [2]


> Сергей М. ©   (25.03.10 14:32) [1]

> if .. then p := @proc1 else p := @proc2;

Если они обе TProc, то лучше без @.

> Delphist2   (25.03.10 14:24)  


const
 procs: array [Boolean] of TProc =(proc1, proc2);
..
 p := procs[checkbox1.checked];
 p;

Только, чур не мешать регулярные процедуры с контролами.

--
Regards, LVT.


 
{RASkov} ©   (2010-03-25 20:47) [3]

> p := procs[checkbox1.checked];
> p;

p - не нужна. Достаточно:
begin
 procs[checkbox1.checked];
end;


 
Delphist2   (2010-03-25 21:48) [4]

А если одна из этих процедур пустая? Ну допустим, действие надо выполнять или не выполнять в теле цикла в зав. от того, стоит ли флажок. Что лучше по быстродействию: передача упр. в процедуру и тут же возврат из нее или проверка условия?


 
Leonid Troyanovsky ©   (2010-03-26 07:58) [5]


> {RASkov} ©   (25.03.10 20:47) [3]

> p - не нужна. Достаточно:

Небольшая разница есть, в разименовании.

> Delphist2   (25.03.10 21:48) [4]
> А если одна из этих процедур пустая?


if checkbox1.checked then
 for i:=0 to n do


> Что лучше по быстродействию:

Проверка условия лучше.
Но, если суть в обработке пользовательского ввода, то
все это монопенисуально.

--
Regards, LVT.



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

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

Наверх




Память: 0.48 MB
Время: 0.052 c
2-1274643123
RWolf
2010-05-23 23:32
2010.08.27
Выполнить код при завершении программы


8-1204756138
Rave4Life
2008-03-06 01:28
2010.08.27
Деформация изображения BMP


2-1274166166
pro_xaoc
2010-05-18 11:02
2010.08.27
Загружать изображение при наведении и кликании мышью


2-1268672321
NBAH1990
2010-03-15 19:58
2010.08.27
IP сканер


15-1269530562
И. Павел
2010-03-25 18:22
2010.08.27
Перестали загружаться файлы (PHP)