[fpc-pascal] Can not set voice property of SpVoice

Toru Takubo takubo at e-parcel.co.jp
Tue Aug 23 06:14:40 CEST 2016


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.
     except
       on E:Exception do begin
         Writeln(E.Message);
       end;
     end;

     SpVoice.Speak('hi', 0);
   finally
     // Restore FPU mask
     Set8087CW(SavedCW);
   end;
   Readln;
end.





More information about the fpc-pascal mailing list