Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
7-87731
borya
2002-12-26 13:29
2003.02.27
Запускаю CreateProcess ом прогу как скрыть её окошко ?


1-87540
Антон.
2003-02-17 10:49
2003.02.27
Что лучше использовать WinExec или ShellExecute


1-87469
Романов Р.В.
2003-02-14 21:06
2003.02.27
Вопрос по set of


6-87592
Ruf
2003-01-08 14:33
2003.02.27
Socket


3-87331
Карелин Артем
2003-02-10 16:06
2003.02.27
Репликация данных в 2 стороны.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский