Главная страница
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.095 c
2-1271079259
noob_one
2010-04-12 17:34
2010.08.27
Можно ли в delphi2007 объявить функцию в одном файле (модуле)


2-1266744427
Тима
2010-02-21 12:27
2010.08.27
передача массива в функцию


15-1263833680
Pikvar
2010-01-18 19:54
2010.08.27
Delphi - с чего начинать изучение?


6-1221941736
WBcodderW
2008-09-21 00:15
2010.08.27
WebBrowser, формы и JS кнопки


15-1267353578
Andy BitOff
2010-02-28 13:39
2010.08.27
Использование Linux приравняли к пиратству