[fpc-pascal] Can not set voice property of SpVoice
Michael Van Canneyt
michael at freepascal.org
Tue Aug 23 09:38:43 CEST 2016
On Tue, 23 Aug 2016, Toru Takubo wrote:
>
>
> On 2016/08/23 16:22, Michael Van Canneyt wrote:
>>
>>
>> On Tue, 23 Aug 2016, Toru Takubo wrote:
>>
>>> Hello,
>>>
>>> I am testing a text to speech program working on Windows SAPI, and I
>>> encountered a problem that I can not set the Voice property because
>>> "member not found".
>>>
>>> Below is the code which describe the problem. It is originally from
>>> the freepascal wiki (http://wiki.freepascal.org/SAPI) and slightly
>>> modified. Setting the voice property in this code is meaningless,
>>> I know. It is just to reproduce the problem.
>>>
>>> The SpVoice.Speak method itself works fine. I am working with fpc
>>> 3.0.0 on Windows 7 64bit. Any advice would be appreciated.
>>>
>>> Regards,
>>>
>>> Toru
>>>
>>> _______________________________________________
>>> program TestSAPI;
>>>
>>> uses
>>> SysUtils, comobj;
>>> var
>>> SavedCW: Word;
>>> SpVoice: Variant;
>>> Token: Variant;
>>> begin
>>> SpVoice := CreateOleObject('SAPI.SpVoice');
>>> // Change FPU interrupt mask to avoid SIGFPE exceptions
>>> SavedCW := Get8087CW;
>>> try
>>> Set8087CW(SavedCW or $4);
>>>
>>> Token := SpVoice.Voice; //I can get a voice token.
>>> Writeln(Token.GetDescription); //The token actually works.
>>>
>>> try
>>> SpVoice.Voice := Token; //"member not found" exception here. I can't
>>> set it.
>>
>> Did you try
>>
>> spVoice.SetVoice(Token);
>>
>
> I got another exception.
>
> "Method 'SetVoice' is not supported by automation object"
Strange, because it is listed in the SAPI reference.
This is probably why you cannot set it: the property seems to be read-only.
Michael.
More information about the fpc-pascal
mailing list