对我说是难题,对各位高手来说有可能是简单问题,解决了我所有的分都给他.急呀! (179分)

  • 主题发起人 主题发起人 hehe2004
  • 开始时间 开始时间
H

hehe2004

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序,如果不加入语音引擎发音功能,一切正常,但只要加入,程序启动时总出现一个"尚未调用CoInitialize"的错误提示,昨天我也发贴了,有朋友也看了,给出的建议不行,希望今天大家能给我一些方法或提示.
 
没人看,是不是我给的分太少了,但这是我所有的分了.
 
哈哈,我不知道,不过我可以看一下吗
 
是不是没有调用初始化语音引擎初始化的函数啊?
可能要先初始化一下才可以用。
 
boys,程序比较多,不知发哪个.
uses VtxtAuto_TLB;
var mySpeech:VTxtAuto_;

procedure TForm1.FormCreate(Sender: TObject);
begin

mySpeech:=CoVTxtAuto_.Create;
mySpeech.Register('','Cread');{注册}
end;

下面是调用:
mySpeech.Speed:=150;
mySpeech.Speak(s1,30);

注:这段代码,放在新的程序中,一切正常,但我到我现在的那个程序中,总是不过.我现在的开程文件如下:
program CMainF;

uses
Forms,
MainF in 'MainF.pas' {MainForm},
OneForm in 'OneForm.pas' {FirstForm},
tryabout in 'tryabout.pas' {Aboutme},
Ckselect in 'Ckselect.pas' {form1},
flashread in 'flashread.pas' {Form3},
wzf in 'wzf.pas' {frmwzf},
starttest in 'starttest.pas' {frmtest},
testok in 'testok.pas' {test},
yinbiao in 'yinbiao.pas' {fyb},
pjdts in 'pjdts.pas' {jdts},
helpf in 'helpf.pas' {helpform};

{$R *.res}

begin

FirstForm:=TFirstForm.Create(Application);
FirstForm.Show;
FirstForm.Update;
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(Thelpform, helpform);
jdts:=tjdts.Create(application);
jdts.Show;
jdts.Update;
Application.CreateForm(TAboutme, Aboutme);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(Tfrmwzf, frmwzf);
Application.CreateForm(Tfrmtest, frmtest);
Application.CreateForm(Ttest, test);
Application.CreateForm(Tfyb, fyb);
FirstForm.Hide;
FirstForm.Free;
Application.Run;

end.
 
话题664899的标题是
 
话题830811的标题是:
话题101689的标题是
话题309542的标题是
话题309542
话题950747
 
Highpeak,请问用
mySpeech:=CoVTxtAuto_.Create;
mySpeech.Register('','Cread');{注册}
算不算初始化?
新建一个程序放进去这些都能正常使用.
 
不一点呀,
也许它还有特定的init函数。
有引擎说明吗,如果有,看看。
看一下类CoVTxtAuto_提供的接口,有没有初始化的函数。
 
Highpeak你好,首先特别感谢你关注我的问题.

我是刚学这个,有些搞深了实在是不懂,但我就用上面的那些代码,新建一个项目程序,加进去都能正常使用,你能不能帮忙帮到底,再看一下,是不是有哪个地方我没搞对,再一次谢你.
 
为了知识,自已再顶一下.
 
上面的代码看不出错误来。
 
procedure TMainForm.FormCreate(Sender: TObject);
var
CurrentTime:LongInt;
devmode:tDevicemode;
begin

mySpeech:=CoVTxtAuto_.Create;
mySpeech.Register('','Cread');{注册}
xx:=screen.Width;
yy:=screen.Height;
if screen.width<>800 then

begin

if EnumDisplaySettings(nil,0,devmode) then

begin

devmode.dmfields:=dm_pelswidth OR dm_pelsheight ;
devmode.dmpelswidth:=800;
{宽度}
devmode.dmpelsheight:=600;{高度}
ChangeDisplaySettings(devmode,0);
{更改设置}
end;

end;

MainForm.Timer1.Enabled:=true;
CurrentTime:=GetTickCount div 1000;
while ((GetTickCount div 1000)<(CurrentTime+5))do

{notdo
anything};
end;


就这儿如果加上
mySpeech:=CoVTxtAuto_.Create;
mySpeech.Register('','Cread');{注册}

程序运行时就出现:
"尚未调用CoInitialize"的错误提示,去了就没事了,当然加上能发音,去了不能发音.
 
uses vtxauto_TLB;

var mySpeech: ivtxtauto;

用前:
mySpeech:=covtxtauto_.Create ;

mySpeech.Register('project1','project1');
用后:
mySpeech:=nil;
//初始化
mySpeech.speak('要读的字符串',vtxtst_reading);

mySpeech.stopspeaking;
// 停止
mySpeech.set_speed(1);
// 速度

关于你的问题可能是少了 myySpeech:=nil 这一初始化语句。
我的机器上可以运行,给分 ^_^
 
楼上的解法很怪哦。
 
yunzew,我试了,还是不行,因为程序一启动就出错,
并且到了这一行代码上:mySpeech:=covtxtauto_.Create
你们是高手,再想想有什么好办法,分是一定有的.
 
是ActiveX控件没有注册,
或者没有调用CoInitialize.
 
什么错误

你加我的qq吧 370342430
 
谢谢大家。

我在网上搜了一下"尚未调用CoInitialize",找了很多,其实中一个
是加上一句CoInitialize(nil),我加上试了一下,问题解决了,现
在给大家散分了.
 

Similar threads

D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
D
回复
0
查看
785
DelphiTeacher的专栏
D
后退
顶部