Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Внизкак узнать адрес процедуры? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.064 c