RunInterface

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

RunInterface

Сообщение Alexander »

Есть несколько интерфейсов с одинаковыми параметрами:
Interface1
Interface2
Interface3
....
Хочу сделать процедуру для вызова интерфейса:

Код: Выделить всё

procedure RunMyInt(sInterfase: string; p1: word; p2: word);
   //some code
   RunInterfase(sInterface, p1, p2);
   //some code
end;
однако как это сделать?
в таком виде:
RunInterfase(sInterface, p1, p2);
при выполнении огребаю ошибку: Интерфейс sInterface не найден

в таком
RunInterfase(string(sInterface), p1, p2);
ругается компилятор. Можно ли как-то это реализовать??
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

RunInterfase('sInterface', p1, p2);
Жду выхода Вселенная 2.12!
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

Max_Fin
не работает!

тестовый пример:

Код: Выделить всё

Interface test1 'test1' doaccept, cyan;
   Create View;
handleevent
      cmInit:{
        message('Выполнились!');
        Abort;
        exit;
      }
   end;
end.
Interface test 'test' doaccept, cyan;
   Create View;
   procedure DoInit(sInterface:string);
      {
        RunInterface(sInterface);
      }
handleevent
      cmInit:{
        DoInit('test1');
        Abort;
        exit;
      }
   end;
End.
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

Упс, извени, на самом деле ошибся.

Воспользуйся функциями модуля Клиент

Код: Выделить всё

Function  vRunInterface (String): Integer;                   external 'G_VDE.dll';
Пример:

Код: Выделить всё

    sInter := 'Interface1';
    vFreeParams;
    vPutParam('Param1', Value1);
    vPutParam('Param2', Value2);
......................................................
    vPutParam('ParamN', ValueN);
    VRunInterface(sInter);
Жду выхода Вселенная 2.12!
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

Спасибо! Попробую!
Но я это проблему решил с помощью макроса:

Код: Выделить всё

Interface test1 'test1' doaccept, cyan;
   Create View;
handleevent
      cmInit:{
        message('Выполнились');
        Abort;
        exit;
      }
   end;
end.
#declare MyFunc(s)
   RunInterface(#s)
#end
Interface test 'test' doaccept, cyan;
   Create View;
   procedure DoInit(sInterface:string);
      {    
        #MyFunc('test1');
      }
handleevent
      cmInit:{
        DoInit('test1');
        Abort;
        exit;
      }
   end;
End.                 
Ответить