调用微软的TTS,在PB中写一个汉字发音的程序,测试通过。
现在想把发音的程式写成com/com+,只需要把需要发音的汉字传入即可,但出现以下错误,请各位大侠指教:
Error:Error calling external object function uof_read at line 7 clicked event of object cb_3 of w3_test
过程如下
A.建立一组件工程,内有 custom class 内建一function 其说明如下
--------------------
function:
function name:uof_read
access :public
return type :integer
argument type:string
argument name:auo_text
---------------------
global var:oleobject tts//声明全局变量
long ll_status
tts = CREATE oleobject
ll_status = tts.ConnectToNewObject("SAPI.SpVoice")
IF ll_status <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
tts.DisconnectObject()
DESTROY tts
else
end if
//朗读
integer li_ret
//终止先前朗读,如果有
li_ret = tts.speak(" ","2")
// 异步朗读
li_ret = tts.speak(auo_text,"1")
return 1
---------------------------
组件信息如下
********** COM/COM+ Project Options **********
Component Server File Name: c:\documents and settings\administrator\my documents\genapp1.dll
Interface Definition File Name: c:\documents and settings\administrator\my documents\genapp1.idl
Comment :
Object COM ClassName Program ID Version Interface Type Interface Name
n_genapp1 COClass_n_genapp1 PB105.n_genapp1 1.0 dual In_genapp1
-----------------------------------------------------
B. 新建 Applicatoin -> window->button
//声明实例变量
oleobject n_voice
-------------
按扭click 事件
long ll_status
n_voice = CREATE oleobject
ll_status = n_voice.ConnectToNewObject("PB105.n_genapp1")
n_voice.uof_read("语音测试")
----------------------
C.执行application 后出现错误信息:Error:Error calling external object function uof_read at line 7 clicked event of object cb_3 of w3_test
------解决方案--------------------
帮顶一把
------解决方案--------------------
函数声明
有问题
------解决方案--------------------
ole端口占用没有?
------解决方案--------------------
来帮顶贴!
------解决方案--------------------
而在pb10以后 则需要这样申明外部函数:
FUNCTION ulong FindFirstFile(string lpFileName,ref str_WIN32_FIND_DATA lpFindFileData) LIBRARY "kernel32.dll" ALIAS FOR "FindFirstFileW" //
FUNCTION ulong FindNextFile(ulong hFindFile,ref str_WIN32_FIND_DATA lpFindFileData) LIBRARY "kernel32.dll" ALIAS FOR "FindNextFileW" //
//播放wav文件
FUNCTION ulong waveOutGetNumDevs() LIBRARY "Winmm.dll"
FUNCTION ulong sndPlaySound(ref string lpszSoundName,ulong uFlags) LIBRARY "Winmm.dll" ALIAS FOR "sndPlaySoundA;Ansi"
即 FOR "****W" 或 FOR "*****A;Ansi"
而有的函数声明则完全不需要 ALIAS FOR "*******"