Pregunta

Lo hice creando un objeto OLE con Delphi en 2000 / NT / XP de la siguiente manera:

Voice := CreateOLEObject('SAPI.SpVoice');
Voice.speak(...)

Pero esto no funciona en Vista, ¿cómo puedo hacer que mi programa simplemente diga un texto en Vista?

¿Fue útil?

Solución

¡Acabo de intentarlo (D2009 en Vista Home Premium) con el siguiente código y funciona!

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Voice: Variant;
begin
  Voice := CreateOLEObject('SAPI.SpVoice');
  Voice.speak('Hello World');
end;

end.

Para su información, hay un buen documento sobre el uso del habla en la programación Delphi por Brian Long ...


(Muy) Actualización tardía:

Para saber por qué podría no funcionar en Vista y dar una excepción EZeroDivide fuera del IDE, vea esta otra pregunta SO: Delphi SAPI Text-To-Speech

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top