Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вызов функции по имени, вызов функции по имени 
:(
    Опции темы
Budy
Дата 28.1.2006, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 616
Регистрация: 6.2.2004
Где: Екатеринбург

Репутация: 1
Всего: 2



:Приветствую
Видел подобную фишку в C и Java (человек за две минуты такую пишет):
в поле ввода указывает как зовут ту или иную ф-цию в языке программирования, указывает ей несколько параметров и хоп, она выдает ответ или проводит какуюлибо операцию.
то есть прога заранее не знает какие функции будут вызываться...
дак вот, меня такая штука заинтерисовала, может кто знает мона ли в Delphi такую замутить?


--------------------
Как ты назовешь свой корабль, так на нем и напишут
user posted image
PM MAIL WWW ICQ   Вверх
Guedda
Дата 28.1.2006, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Можно, но с помощью WinApi. Тебе в тот раздел.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Yanis
Дата 28.1.2006, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Как вариант, создай DLL с нужными функциями, а потом подгружай их при помощи LoadLibrary. А ещё тебе наверное будет интересно глянуть на ЭТО.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Msl
Дата 28.1.2006, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 18.8.2005

Репутация: нет
Всего: нет



QA From DKB:
execute a method by name;
Author: Tomas Rutkauskas
Цитата


Answer:

Here is an example that executes a method by name.
Note that the method to be called (in the example that is SomeMethod)
must be declared as published, otherwise MethodAddress wil return nil.


{ ... }
type
  PYourMethod = ^TYourMethod;
  TYourMethod = procedure(S: string) of object;

procedure TMainForm.Button1Click(Sender: TObject);
begin
  ExecMethodByName('SomeMethod');
end;

procedure TMainForm.ExecMethodByName(AName: string);
var
  PAddr: PYourMethod;
  M: TMethod;
begin
  PAddr := MethodAddress(AName);
  if PAddr <> nil then
  begin
    M.Code := PAddr;
    M.Data := Self;
    TYourMethod(M)('hello');
  end;
end;

procedure TMainForm.SomeMethod(S: string);
begin
  ShowMessage(S);
end;

Добавлено @ 09:55
Этот вызов по имени для динамической загрузки из DLL:
Код


procedure TForm1.btnShowBackupDlgClick(Sender: TObject);
var
 hDLL: THandle;

 //lpmCopy: 
function (lpszSrce, lpszDest, lpszHelp, lpszMask: pChar; bVerCheck, bPrompt: boolean): boolean;
begin

 @lpmCopy := nil;
 hDLL := LoadLibrary('cw_bck.dll'); {will work if dll is in the path}
 if hDLL > HINSTANCE_ERROR then
  try
   @lpmCopy := GetProcAddress(hDLL,'ShowBackupDlg');
   if Assigned(lpmCopy) then
    lpmCopy('C:\DBD\',
            'C:\DBD\backup',
            'C:\DBD\DBD.HLP',
            '*.*',false,true)
  finally
   FreeLibrary(hDLL);
  end;
end;
)

PM MAIL   Вверх
Budy
Дата 29.1.2006, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 616
Регистрация: 6.2.2004
Где: Екатеринбург

Репутация: 1
Всего: 2



Msl, сенк, хороший пример, правда процедуры и функции получается использовать только моего типа TMainForm (по примеру №1)

всем спасибо, но всеже не то что надо.

приведу пример:
в Math дофига всяких тригонометрических функций. Тема такая: юзер в Edit1 указывает (например) cos, а в Edit2 - агрумент (например) 1,7, жмет кнопку, а прога хлоп посчитала и вывела ответ


--------------------
Как ты назовешь свой корабль, так на нем и напишут
user posted image
PM MAIL WWW ICQ   Вверх
ivan219
Дата 29.1.2006, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



Как вариант использовать ComboBox с задаными функциями а в Edit писать значение.

PM MAIL ICQ   Вверх
Демо
Дата 29.1.2006, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Используй WSH - Windows Script host и ActiveX к нему.


--------------------
    
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0828 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.