Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как в процедуру передать имя функции? [D7, WinXP]


vishnia ©   (2007-09-03 15:36:00) 

Вопрос сформулирован в теме.


oxffff   (2007-09-04 16:01:00) [1]

class function MethodAddress(const Name: ShortString): Pointer?


Jeer   (2007-09-04 14:20:00) [2]


> app ©   (04.09.07 14:05) [9]


Спишу предлажить вориант:

function MyFunc1: double;
begin
Result := Random;
end;

function MyFunc2: double;
begin
Result := 2*Random;
end;

function MyFunc3: double;
begin
Result := 3*Random;
end;

procedure MyProc(sFunc: string);
begin
 if sFunc = 'MyFunc1' then..
 if sFunc = 'MyFunc2' then..
 if sFunc = 'MyFunc3' then..
//...
end;


app   (2007-09-04 14:05:00) [3]

Все гадание, если автор не появится до завтра, то ветку закрою.


Jeer   (2007-09-04 13:48:00) [4]

6-е и часть 7-го чувств подсказывают мне, что нужно что-то вроде нижеследующего, о чем выше упомянуто в [2]:

type
   TMyFunc = function(value: double): double;

function DoIt(x: double): double;
begin
 Result := x;
end;

function NotDoIt(x: double): double;
begin
 Result := 0.0;
end;

procedure MyProc(Func: TMyFunc);
var x: double;
begin
 x := Func(1.2345);
end;

//
MyProc(@DoIt);
MyProc(@NotDoIt);

P.S.
Возможны варианты с явным pointer-ом: MyProc(pFunc: Pointer)


{RASkov}   (2007-09-04 13:38:00) [5]

type TFunc = function;

function BlaFunc: String;
begin
 Result:='Bla';
end;

function OopsFunc: String;
begin
 Result:='Oops...';
end;

procedure ShowMess5Raz(F: TFunc);
var N: Integer;
begin
 for N:= 1 to 5 do ShowMessage(F);
end;
.....
ShowMess5Raz(BlaFunc);
ShowMess5Raz(OopsFunc);


Anatoly Podgoretsky   (2007-09-04 12:02:00) [6]

Пусть полежит, или появится автор или оно само уйдет в архив.
Пока неясна подоплека.


evvcom   (2007-09-04 11:59:00) [7]

Странно, почему этот вопрос еще в основной :?)


Anatoly Podgoretsky   (2007-09-03 16:31:00) [8]

> vishnia  (03.09.2007 15:36:00)  [0]

А зачем?
Имя функции это текст, а текст передается в апострофах.


Dib@zol   (2007-09-03 15:45:00) [9]

Что ты конкретно хочешь сделать? Уточни.


Вася Правильный   (2007-09-03 15:41:00) [10]

а смысл?
чтоб вызвать?
тогда передавай указатель


Сергей М.   (2007-09-03 15:38:00) [11]

Например, так

MyProcedure('Имя функции');


Наверх

Титульная страница Поиск, карта сайта Написать письмо