Главная страница
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
1-87546
Tolyan
2003-02-17 10:38
2003.02.27
Stack overflow


1-87460
Николай В.
2003-02-18 15:26
2003.02.27
DKLib (PGP)


1-87535
Checist [root]
2003-02-17 10:02
2003.02.27
Считывание из файла


3-87326
Alpine
2003-02-10 14:13
2003.02.27
Ошибка с SQL запросом !! ((


7-87727
Uka
2002-12-30 10:54
2003.02.27
Люди добрые!