Also, for what it's worth, your code works fine on fpc 3.20.


On 6/26/2023 11:04 PM, James Richters via fpc-pascal wrote:
I appreciate the help with this.  I'm still confused.
In my original post, I  already had CoInitialize,   CoUninitialize; and Unit
ComOBJ,  Unit Windows and Unit ActiveX I was still getting EOleError:
Variant does not reference an automation object.

Do I need to do all this Change FPU stuff?

I'm sure I'm doing something wrong but I still can't get it to work. Here's
my original program.  I wasn't even trying to change the voice yet.  What do
I need to do to this to make it work?

James

{$mode objfpc}

uses
CRT, Windows, SysUtils, ComObj, Variants, OLEServer,  Classes,  ActiveX,
ShellApi;

var
   SavedCW: Word;
   SpVoice: Variant;
   MyWideString: WideString;
begin
   CoInitialize(nil);
   SpVoice := CreateOleObject('SAPI.SpVoice');
   MyWideString := WideString('Hello, the time is ' + TimeToStr(Now));
   Writeln(MyWideString);
   // Change FPU interrupt mask to avoid SIGFPE exceptions
   SavedCW := Get8087CW;
   try
     Set8087CW(SavedCW or $4);
     SpVoice.Speak(MyWideString, 0);
   finally
     // Restore FPU mask
     Set8087CW(SavedCW);
   end;
   Writeln('Press Any Key');
   ReadKey;
   CoUninitialize;
end.

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to