Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Функция = строка. Возможно ли?


Автор: Sanek123 25.10.2011, 13:00
Здравствуйте.

Сразу извините за название темы и, возможно, раздел, и скорее всего всю тупость вопроса. Однако нужен ответ "Да" или "Нет". Поиск в гугле не выходит так как не могу сформулировать вопрос.

Скажите, возможно ли выполнение примерно такого кода (среда Delphi):

Код

...
procedure TFmain.MyFunc(int:integer);
begin
...
end;

procedure TFmain.ExecuteComand();
   var
   StrCom:string;
begin
    StrCom:='MyFunc(int)';
    if StrCom<>'' then @StrCom;
end;


т.е. команда и параметры могут быть различны, но получены в виде строки. 

Знаю что подобные вещи делаются с помощью *.dll но я эти команды помимо чтения должен еще и писать в тхт. Как писать в длл - я не знаю.

С помощью CMD, COM и прочих "скриптов" тоже не вариант.


Натыкался в сети на что-то вроде
Цитата

...переменная процедурного типа...
TCallback = function (CallType, Fmt: Word;...


Если меня кто-то понял - прошу помочь.
 

Автор: Sanek123 26.10.2011, 06:01
нашел в сети

Код

СПОСОБ№2
 Как мне использовать переменную типа string в качестве имени процедуры? 
 Никак. Тем не менее, вы могли бы создать stringlist как показано ниже: 

 stringlist.create; stringlist.addobject('proc1',@proc1);
 stringlist.addobject('proc2',@proc2); 

 и затем реализовать это в вашей программе: 

 var
 myfunc : procedure;
begin
if stringlist.indexof(s) = -1 then
 messagedlg('Не понял процедуру '+s,mterror,[mbok],0)
else
begin
 @myfunc := stringlist.objects[stringlist.indexof(s)];
 myfunc;
end;
end;



не сказать что все понятно, однако автор говорит что нельзя сделать строку именем процедуры а свм создает стринглист и читает его строки, но ведь строка стриглиста есть строка(стринг), пусть даже значение строки и имеет тип Tobject? или я не так понял?

помогите разобраться.

Автор: rodnover 26.10.2011, 07:24
Через RTTI. Здесь есть примерчики http://robstechcorner.blogspot.com/2009/09/delphi-2010-rtti-basics.html

Но это для Delphi 2010 и новее.

Автор: Frees 26.10.2011, 08:12
Sanek123, задача у тебя какая? Ты по моему не в том направлении двигаешься.

Автор: CROTishka 31.10.2011, 09:15
http://www.gunsmoker.ru/2008/10/x-y-z.html

что-то ни в одном из известных паттернов такое не нужно. 
а уж если вы такие вопросы задаёте, есть мнение, что вы что-то не то делаете.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)