Midas запуск процедуры на ApplicationServer
От:
sergp
Дата: 28.11.03 08:48
Оценка:
Знатоки, помогите плищз, как запустить процедуру на ApplicationServer по технологии Midas. C++ Builder. процедура с двумя входными параметрами, или хоть ссылку дайте
Re: Midas запуск процедуры на ApplicationServer
От:
KIT75
Дата: 28.11.03 14:43
Оценка:
Здравствуйте, sergp, Вы писали:
S>Знатоки, помогите плищз, как запустить процедуру на ApplicationServer по технологии Midas. C++ Builder. процедура с двумя входными параметрами, или хоть ссылку Издайте
Наследуем компонент TBaseProvider:
//==============================================================================
//==============================================================================
file.H
//==============================================================================
class PACKAGE TExecProvider : public TBaseProvider
{
private:
bool run;
protected:
public:
System::OleVariant* pParams;
__fastcall TExecProvider(TComponent* Owner);
virtual void __fastcall InternalExecute( const WideString CommandText,
System::OleVariant &Params );
virtual System::OleVariant __fastcall InternalGetParams(TParamTypes Types);
__published:
};
typedef void ( __fastcall *TExecMethod )( TObject*, TExecProvider* );
//==============================================================================
//==============================================================================
//==============================================================================
file.CPP
//==============================================================================
void __fastcall TExecProvider::InternalExecute( const WideString CommandText,
System::OleVariant &Params )
{
if( !run ) {
run = true;
pParams = &Params;
AnsiString ansi = CommandText;
ShortString methodName = ansi;
TExecMethod methodAddr = (TExecMethod)Owner->MethodAddress( methodName );
if( methodAddr ) methodAddr( Owner, this );
else {
ansi = AnsiString( "Метод" ) + ansi + AnsiString( "не найден" );
Params = ansi;
}
run = false;
}
else {
AnsiString st = "Ресурс 'TExecProvider' занят";
Params = st;
}
}
//---------------------------------------------------------------------------
System::OleVariant __fastcall TExecProvider::InternalGetParams(TParamTypes Types)
{
return *pParams;
}
//==============================================================================
//==============================================================================
//==============================================================================
Определяем свои процедуры:
class TRDM_Main : public TCRemoteDataModule
{
__published: // IDE-managed Components
void __fastcall EnterDB( TExecProvider* provider );
void __fastcall LoginOperator( TExecProvider* provider );
void __fastcall LoginAdm( TExecProvider* provider );
void __fastcall GetTimeServer( TExecProvider* provider );
...
};
//==============================================================================
//==============================================================================
//==============================================================================
Примерная реализация
void __fastcall TRDM_Main::GetTimeServer( TExecProvider* provider )
{
*(provider->pParams) = OleVariant( (int)time(0) );
}
//==============================================================================
//==============================================================================
//==============================================================================
Некузяво, но работает
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить