Вопрос по Delphi

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

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

    dima00 Гость

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

    zubr Гость

    В C++ легко через макрос, а в Delphi врядли.
     
  3. Barmutik

    Barmutik Гость

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

    chingiz Гость

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

    BVS Гость

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

    Другой способ: хранить процедуры в dll библиотеке, и использовать API функции по позднему связыванию.
    Код (Text):
    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.
     
Загрузка...
Похожие Темы - Вопрос по Delphi
  1. ApplePen
    Ответов:
    0
    Просмотров:
    77
  2. gURaBA_N
    Ответов:
    3
    Просмотров:
    94
  3. kartaman
    Ответов:
    0
    Просмотров:
    128
  4. Peter
    Ответов:
    4
    Просмотров:
    524
  5. di0d_
    Ответов:
    1
    Просмотров:
    441
Статус темы:
Закрыта.

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