문제

2000/nt/xp에 다음과 같이 델파이로 Ole Object를 만들어 다음과 같이했습니다.

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

그러나 이것은 Vista에서는 작동하지 않습니다. 어떻게 내 프로그램이 Vista에서 텍스트를 단순히 말할 수 있습니까?

도움이 되었습니까?

해결책

방금 다음 코드로 (Vista Home Premium에서 D2009) 시도해 보았습니다.

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.

참고로, a 델파이 프로그래밍에서 연설을 사용하는 것에 대한 멋진 논문 Brian Long ...


(매우) 늦은 업데이트 :

그것이 Vista에서 작동하지 않는 이유에 대해 IDE 외부에서 Ezerodivide 예외를 제공하는 이유는 다음과 같은 질문을 참조하십시오. 델파이 사피 텍스트-음성

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top