1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
Скрыть объявление

Уважаемый Гость, в 23:30 по мск форум будет закрыт на профилактику на 1,5 часа до 01:00 24.10.2017

Вопрос по Delphi

Тема в разделе "Delphi - Компоненты", создана пользователем dima00, 3 июл 2007.

Статус темы:
Закрыта.
  1. dima00

    dima00 Гость

    Репутация:
    0
    Скажите, пожалуйста, можно ли в Delphi как нибудь вызывать процедуру или функцию через переменную типа string, содержащую имя процедуры (ф-ции). Например вызвать свою процедуру procedure1 с помощью переменной s='procedure1', но не используя if s=... then procedure1, а каким нибудь оператором. Т.е. чтобы процедуры вызывались пользователем например через edit
     
  2. zubr

    zubr Гость

    Репутация:
    0
    В C++ легко через макрос, а в Delphi врядли.
     
  3. Barmutik

    Barmutik Гость

    Репутация:
    0
    В некоторой мере Вам поможет MethodAddress, но если Вам нужно полномасштабное решение то испоьлзуйте скриптовые языки...
     
  4. chingiz

    chingiz Гость

    Репутация:
    0
    Действительно в Delphi это вряд ли возможно.
    Но я не пойму чем вам не нравится конструкция
    if Edit.Text=... then Procedure1 и т. д.
    или же case...
     
  5. BVS

    BVS Гость

    Репутация:
    0
    Для: dima00
    Вместо Edit`а попробуй использовать TComboBox, в property Items: TStrings занесешь все свои процедуры которые должны вызываться (ComboBox1.Items.AddObject('procedure1', TObject(procedure1()))
    Таким образом у тебя будет возможность иметь и название и адрес твоих процедур.

    Другой способ: хранить процедуры в dll библиотеке, и использовать API функции по позднему связыванию.
    Код:
    HINSTANCE LoadLibrary(
    
    LPCTSTR lpLibFileName 	// address of filename of executable module 
    );
    FARPROC GetProcAddress(
    
    HMODULE hModule,	// handle to DLL module 
    LPCSTR lpProcName 	// name of function 
    );
    PS: Сейчас у меня delphi не стоит поэтому код не проверял, если будет выдавать ошибку попробуй заменить TObject(procedure1()) на TObject(@procedure1()) или еще как нибуть приведи procedure1() к типу TObject.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей