制作小精灵代码(c++biuder 6)

来源:互联网 发布:怎么清楚ipad淘宝缓存 编辑:程序博客网 时间:2024/05/01 10:33

我用c++biuder   5制作小精灵是可以通过,可是c++biuder   6时总是跳不过去,总是说TAgent未定义,那位有做过的代码请给我一份,或提示我怎样调通。
问题点数:100、回复次数:23
1楼  F117p   (走两步,你走两步?) 五级用户 该版得分小于等于5000分,大于2000分  回复于 2005-06-11 22:29:30  得分 0

先安装这个TAgent。  
  在Import   Active   Library中找到这个东西,安装  
   
 
Top
2楼  slchen   (笨鸟先飞) 二级用户 该版得分小于等于500分,大于100分  回复于 2005-06-12 07:50:03  得分 0

我装了,在cb5中可以,但是再cb6中调试的时候总是说TAgent没定义。
Top
3楼  GHOSTWY   (花祭) 四级用户 该版得分小于等于2000分,大于1000分  回复于 2005-06-13 15:13:49  得分 0

是什么东西
Top
4楼  constantine   (飘遥的安吉儿) 四星用户 该版得分小于等于100000分,大于50000分  回复于 2005-06-13 15:39:15  得分 70

首先确认安装了,之后看一下这段代码  
  //---------------------------------------------------------------------------  
   
  #include   <vcl.h>  
  #pragma   hdrstop  
   
  #include   "Unit1.h"  
  //---------------------------------------------------------------------------  
  #pragma   package(smart_init)  
  #pragma   link   "AgentObjects_OCX"  
  #pragma   resource   "*.dfm"  
  TForm1   *Form1;  
  //---------------------------------------------------------------------------  
  __fastcall   TForm1::TForm1(TComponent*   Owner)  
                  :   TForm(Owner)  
  {  
  load=false;  
   
  }  
  //---------------------------------------------------------------------------  
   
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
  if(load==false)  
  {  
  if(OpenDialog1->Execute())  
  {  
  wact="a";  
  act=wact;  
  char   tmp[100];  
  GetWindowsDirectory(tmp,100);  
  path=OpenDialog1->FileName;  
  try  
  {  
  Agent1->Characters->Load(act,path);  
  }  
  catch(...)  
  {  
  ShowMessage("不能正常载入精灵助手!");  
  return;  
  }  
  numan=Agent1->Characters->Character(act);  
  numan->Show(0);  
  talk="大家好,我是精灵助手,有什么疑问尽管问我好了!";  
  numan->Speak(talk,"");  
  load=true;  
  }  
  }  
  else  
  ShowMessage("精灵助手已经载入了,请不要重复加载!");  
  }  
  //---------------------------------------------------------------------------  
  void   __fastcall   TForm1::Button2Click(TObject   *Sender)  
  {  
  if(load==true)  
  {  
  talk="Bye   bye   我走了!";  
  numan->Speak(talk,"");  
  Sleep(1000);  
  Agent1->Characters->Unload(act);  
  load=false;  
  }  
  else  
  ShowMessage("请先载入精灵助手!");  
  }  
  //---------------------------------------------------------------------------  
  WideString   tmpact[28]={"Acknowledge","LookDown",  
  "Sad","Alert","LookDownBlink","Search","Announce",  
  "LookUp","Blink","LookUpBlink","Confused",  
  "LookLeft","Suggest","Congratulate","LookLeftBlink",  
  "Surprised","Decline","LookRight","Think",  
  "DontRecognize","LookRightBlink","Wave","Explain",  
  "Write","Pleased","Read","Greet","RestPose"};  
   
  void   __fastcall   TForm1::RadioGroup1Click(TObject   *Sender)  
  {  
  if(load==true)  
  {  
   
  BSTR   active=tmpact[RadioGroup1->ItemIndex];  
  try  
    {  
      numan->Play(active);  
      talk="我现在正在"+RadioGroup1->Items->Strings[RadioGroup1->ItemIndex]+"呢!";  
      numan->Speak(talk,"");  
      }  
  catch(...)  
    {  
      talk="对不起,没有"+RadioGroup1->Items->Strings[RadioGroup1->ItemIndex]+"这个动作!";  
      numan->Speak(talk,"");  
    }  
  }  
  else  
  ShowMessage("请先载入精灵助手!");  
  }  
  //---------------------------------------------------------------------------  
   
  void   __fastcall   TForm1::Button3Click(TObject   *Sender)  
  {  
  if(load==true)  
  {  
  talk="我要藏起来了!";  
  numan->Speak(talk,"");  
  numan->Hide(0);  
  }  
  else  
  ShowMessage("请先载入精灵助手!");  
  }  
  //---------------------------------------------------------------------------  
   
  void   __fastcall   TForm1::Button4Click(TObject   *Sender)  
  {  
   
  if(load==true)  
  {  
  numan->Show(0);  
  talk="嘿嘿,我又来了!";  
  numan->Speak(talk,"");  
  }  
  else  
  ShowMessage("请先载入精灵助手!");  
  }  
  //---------------------------------------------------------------------------  
   
 
Top
5楼  slchen   (笨鸟先飞) 二级用户 该版得分小于等于500分,大于100分  回复于 2005-06-14 17:37:49  得分 0

我安装的Mcrosoft   Agent   Control   2.0,安装以后,把控件放到窗体上,没有任何代码都编译部过去(cb6),但是在cb5上就没有此问题。  
   
  寻求解决办法!!!!!
Top
6楼  fanyufanyu   (反语) 四级用户 该版得分小于等于2000分,大于1000分  回复于 2005-06-16 09:23:15  得分 0

这个问题可能和你的windows版本和补丁有关。在导入Active库的时候,虽然有时编译报错,但当你把这些出错语句用注释注掉的话,还是能正常工作的,我在BCB6中就遇到过几次这样的问题。最后还有一种可能,就是微软角色代理安装的不正确,一般的COM类东东,最好是开发版本和发行版本一样,不然有可以发生潜在的错误。
Top
7楼  renfushen   (大鸟) 二级用户 该版得分小于等于500分,大于100分  回复于 2005-06-16 21:49:43  得分 0

up  
 
Top
8楼  renfushen   (大鸟) 二级用户 该版得分小于等于500分,大于100分  回复于 2005-06-17 08:36:33  得分 0

帮帮忙啊  
   
 
Top
9楼  renfushen   (大鸟) 二级用户 该版得分小于等于500分,大于100分  回复于 2005-06-17 08:50:23  得分 0

我也想知道
Top
10楼  fanyufanyu   (反语) 四级用户 该版得分小于等于2000分,大于1000分  回复于 2005-06-17 09:59:09  得分 0

你的项目是不是从CB5升迁到CB6的呀,说不定是这个问题,你机器里的其它用角色代理的程序的角色能正常工作吗?如office,杀毒软件等。
Top
11楼  wg961423   (臭虫) 四级用户 该版得分小于等于2000分,大于1000分  回复于 2005-06-17 10:11:20  得分 0

我用的也有问题:安装好Mcrosoft   Agent   Control   2.0后,把控件放在窗体上,没有任何代码,编译通过,但按网上的一些例子写了后,Link就出错了([Linker   Error]   Unresolved   external   'Agentobjects_tlb::IID_IAgentCtlCharacterEx'   referenced   from   E:/BCB/AGENT/UNIT1.OBJ)。  
   
  这是什么问题呢?  
   
  XP   SP2     BCB6.0
Top
12楼  F117p   (走两步,你走两步?) 五级用户 该版得分小于等于5000分,大于2000分  回复于 2005-06-19 03:22:14  得分 30

以下是bcb6下编译连接通过。  
   
   
        TVariant   mv("C://WINDOWS//msagent//chars//merlin.acs");  
      IAgentCtlRequest   *pR=   Agent1->Characters->Load(WideString("merlin").c_bstr(),mv);  
    //   IAgentCtlCharacter   *Character=Agent1->Characters->Character(WideString("merlin"));  
  IAgentCtlCharacterEx*   Character   =  
                    (IAgentCtlCharacterEx*)Agent1->Characters->Character(WideString("merlin").c_bstr());  
   
        Character->Show(TVariant(0));  
      Character->MoveTo(100,100,TVariant(2));  
      Character->Play(WideString("Search"));  
   
  对于和bcb5的不同,由于TVariant类型的转换,和BSTR的问题,导致了在bcb6下不能编译通过,可能是bcb6类型检查更加严格了吧?
Top
13楼  slchen   (笨鸟先飞) 二级用户 该版得分小于等于500分,大于100分  回复于 2005-06-19 10:11:16  得分 0

能帮忙解释一下,上面代码的用法吗?我把他们加到FormCreat里,和没加的时候一样,还是编译部过去,还是出来一个cpu的对话框,在按f9,就谈出对话框(翻译):工程文件中的消息出错,可惜没办法把图片贴上去。
Top
14楼  F117p   (走两步,你走两步?) 五级用户 该版得分小于等于5000分,大于2000分  回复于 2005-06-19 15:06:47  得分 0

试下把Agent卸了,再重新安装。  
  或重新写个工程,再然连CBuilder6/Import里的那个lib也加入到工程里去  
   
  以上代码,可以原封不动的拷贝过去,比如考到一个Button的OnClick事件里。  
  能编译和连接,运行正常显示小精灵,就是那个老头子
Top
15楼  renfushen   (大鸟) 二级用户 该版得分小于等于500分,大于100分  回复于 2005-06-19 22:11:45  得分 0

能写的在详细写吗?我这个控件第一次使用。  
  1、怎样卸载  
  2、“再然连CBuilder6/Import里的那个lib也加入到工程里去”那个lib  
  谢谢,多帮忙!!  
 
Top
16楼  WiseNeuro   (春之舞) 二级用户 该版得分小于等于500分,大于100分  回复于 2005-06-19 23:06:36  得分 0

学习一下
Top
17楼  WiseNeuro   (春之舞) 二级用户 该版得分小于等于500分,大于100分  回复于 2005-06-20 01:09:46  得分 0

to   F117p((兰色狐狸)每天都要去检破烂来维持生活):我是了一下,在cb6中它好使,  
  但想请教一下怎么用Speak(tagVARIENT,tagVARIENT)方法,  
  Character->Speak(WideString("Hello"),WideString(""));不能编译通过。
Top
18楼  F117p   (走两步,你走两步?) 五级用户 该版得分小于等于5000分,大于2000分  回复于 2005-06-20 11:49:56  得分 0

re:  
  把那句改为:   Character->Speak(TVariant("Hello"),TVariant(""));
Top
19楼  WiseNeuro   (春之舞) 二级用户 该版得分小于等于500分,大于100分  回复于 2005-06-20 23:06:12  得分 0

谢谢。但为什么执行   Character->Speak(TVariant("Hello"),TVariant(""));  
   
  后只有文字显示,而不朗读出来呢?
Top
20楼  F117p   (走两步,你走两步?) 五级用户 该版得分小于等于5000分,大于2000分  回复于 2005-06-21 00:39:06  得分 0

因为你没有安装TTS发音引擎,你可以到M$网站上去下载
Top
21楼  WiseNeuro   (春之舞) 二级用户 该版得分小于等于500分,大于100分  回复于 2005-06-21 22:46:59  得分 0

我安了tts,但还是读不出来
Top
22楼  F117p   (走两步,你走两步?) 五级用户 该版得分小于等于5000分,大于2000分  回复于 2005-06-21 23:33:00  得分 0

在控制面版里设置语声,有2中选者simple   Chinese和English,如果选前者,则能读中文汉字,英文单词安字母来读,如果选择ENGLISH则,中文汉字不能读,只读英语
Top
23楼  WiseNeuro   (春之舞) 二级用户 该版得分小于等于500分,大于100分  回复于 2005-06-22 23:48:13  得分 0

谢谢你.我查出来了,要在使用Speak之前设置LanguageID   =   0x0409;   //english  
  这样就可以读出来了.太高兴了,现在那个Peedy正在我桌面上悠闲的整理自己的  
  羽毛呢,还调皮的取出个眼镜戴上了呢...哈哈
原创粉丝点击