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

Reply via email to