Страница 1 из 1

RunInterface

Добавлено: 26 дек 2006, 10:19
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);
ругается компилятор. Можно ли как-то это реализовать??

Добавлено: 26 дек 2006, 11:23
Max_Fin
RunInterfase('sInterface', p1, p2);

Добавлено: 26 дек 2006, 11:56
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.

Добавлено: 26 дек 2006, 19:55
Max_Fin
Упс, извени, на самом деле ошибся.

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

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

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

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

    sInter := 'Interface1';
    vFreeParams;
    vPutParam('Param1', Value1);
    vPutParam('Param2', Value2);
......................................................
    vPutParam('ParamN', ValueN);
    VRunInterface(sInter);

Добавлено: 27 дек 2006, 08:37
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.