Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

MsAgent

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: MsAgent Responder citando

Explorando en busca de curiosidades he topado con un código de Leo para empezar a manejar el MSAgent y me ha resultado interesante, solo que me da un fallo:

"Body has already been defined for function '_fastcall Tform1::~Tform1()'

Utilizo winXP pro y el BCB6.

Agradecería una ayudita Smile
Volver arriba
Mensaje    Asunto: Responder citando

Si te refieres a este:

    https://cppbuilder.es/viewtopic.php?t=595

el mensaje es porque te has comido la declaración del destructor en la cabecera, o sea:

    __fastcall ~TForm1();


En este enlace tienes un ejemplo un poquito mas completo para BCB6:

    http://cppbuilder.hypermart.net/msagent6.zip
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias Leo, otra vez y con tu ayuda he salido airoso del problema que tenía, y menos mal que me pusiste el segundo ejemplo ya que con el primero y aún declarando el constructor en el archivo de cabecera seguía teniendo el mismo fallo. Seguidamente expongo el código que me ha funcionado OK ya que tal vez pueda ayudar a alguien:

//Archivo de cabecera:

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations

Variant oAgent, oCharacters, oCharacter;
bool AgentPresent;

public: // User declarations
__fastcall TForm1(TComponent* Owner);
__fastcall ~TForm1();
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

//Archivo de implementación:

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <ComObj.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
// Inicializamos
oAgent = CreateOleObject("Agent.Control.1");
AgentPresent = !oAgent.IsEmpty();
if (AgentPresent)
{
oAgent.OlePropertySet("Connected", true);

// Cargamos un caracter/muñequito
oCharacters = oAgent.OlePropertyGet("Characters");
oCharacters.OleProcedure("Load", "Merlin");
oCharacter = oAgent.OlePropertyGet("Characters", "Merlin");

// Habilitamos los efectos de sonido [opcional]
oCharacter.OlePropertySet("SoundEffectsOn", true);

// Lo movemos
oCharacter.OleProcedure("MoveTo", 800, 600);

// Mostramos el muñequito
oCharacter.OleProcedure("Show");

// Lo movemos visible, se ve como vuela Wink
oCharacter.OleProcedure("MoveTo", 0, 0);
}

}
//---------------------------------------------------------------------------
__fastcall TForm1::~TForm1()
{
if (AgentPresent)
{
oAgent.OlePropertySet("Connected", false);
oAgent = oCharacters = oCharacter = Unassigned;
}
}
//----------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (AgentPresent)
{
// Ejecutamos una animación (hay muchisimas diferentes)
// (read, alert, announce, confused, explain, reading, write, etc...)
oCharacter.Exec(Procedure("Play") << "read");
// Hacemos que hable
oCharacter.Exec(Procedure("Speak") << "Esto es una prueba.");
}
}
//---------------------------------------------------------------------------
/*Ahora sólo me queda dedicar un tiempo a estudiar lo que he hecho ya que no domino el tema de los constructores y destructores.
Gracias de nuevo Wink
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.