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