Главная страница
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.066 c
2-1265397112
И. Павел
2010-02-05 22:11
2010.08.27
Как проиграть несколько звуков из ресурса?


15-1267507011
Студент с горящими глазами
2010-03-02 08:16
2010.08.27
Вопрос по поводу вакансий


6-1223119251
Booo))
2008-10-04 15:20
2010.08.27
tcpserver/client


2-1268379069
Б
2010-03-12 10:31
2010.08.27
Имя файла в TOpenDialog.


3-1221840469
andreoman
2008-09-19 20:07
2010.08.27
cxGridDBTableView, фокус и выделение ячейки