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

Вниз

Функция должна вернуть ссылку на функцию   Найти похожие ветки 

 
Yozch ©   (2003-02-18 16:04) [0]

Уважаемые мастера. Мне необходимо, чтобы функция в зависимости от входного параметра вернула НАЗВАНИЕ функции, которую мне впоследствии нужно использовать
Типа

begin
qwe(1).creat;
......
end;


function qwe(chIn:integer): ??
begin
if chIn:=1 then result:=??
...
end;


 
MBo ©   (2003-02-18 16:05) [1]

может, перефразируешь вопрос? ;)


 
Игорь Шевченко ©   (2003-02-18 16:11) [2]

И как же ее потом, по названию, использовать ?
(Или это второй вопрос будет) ?


 
Silver_   (2003-02-18 16:12) [3]

Type
f1 = Function ...
псматри в хелпе на процедурный тип

... Result по Case можешь присвоить нужную функцию...


 
jack128 ©   (2003-02-18 16:13) [4]

Вопрос протеворечит теме
Что же все - таки должна вернуть твоя функция - другую функцию(тогда см процедурные типы) или название функции(тогда результат типа string)?


 
Yozch_   (2003-02-18 16:23) [5]

Ребята, есть рабочий код

with TCipher_Diamond2.Create do
try
Mode := TCipherMode(1);
InitKey(EDit15.Text, nil);
R := EncodeString(Sender);
// DefaultDigestStringFormat:=16;
case DefaultDigestStringFormat of
16: Sender := StrToBase16(PChar(R), Length(R));
64: Sender := StrToBase64(PChar(R), Length(R));
else
Sender:=R
end;
Done;
finally
Free;
end;

Перед его использования треба запросить функцию, которая вернет название функции, которую трэба использовать вместо TCipher_Diamond2, например gost


 
PVOzerski ©   (2003-02-18 17:42) [6]

Если функция - не метод, можно извратиться следующим образом:
те функции, которые требуется вызывать по имени, перечислить в секции exports (это поддерживается не только в dll, но и в exe), а потом вызывать через GetProcAddr от hInstance. Такое действительно работает, хотя код выглядит странно. А вот с методом... У Вас еще и конструктор... А именно название позарез надо? - а то ведь ещё метаклассы есть (см. tClass).


 
DimonZh ©   (2003-02-18 17:48) [7]

В паскале это делалось очень просто:

{F+}
type func:function(x:real):real;

Function f1(x:real):real;
Begin ... end;

Function f2(x:real):real;
Begin ... end;

Function FFF(x:integer):func;
Begin
if x>0 then fff:=f1 else fff:=f2; //не уверен, но как-то так
end;
{F-}



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
6-87600
Кокандокало
2003-01-05 20:29
2003.02.27
Обработка ошибки сокета..


3-87258
SkyN
2003-02-11 16:25
2003.02.27
чтобы если записей нет sum(t2.c1) вадовало 0


1-87455
Paxer
2003-02-18 21:04
2003.02.27
Как задать Image для развернутого состояния TTreeNode?


1-87562
Hint
2003-02-17 13:03
2003.02.27
Оптимизация поиска в файлах


6-87591
Chak
2003-01-09 16:46
2003.02.27
Скорость CONNECTa