Entwickler-Ecke

Multimedia / Grafik - Muss man CreateOLEObject ('SAPI.SpVoice') freigeben?


galagher - Do 14.09.06 19:36
Titel: Muss man CreateOLEObject ('SAPI.SpVoice') freigeben?
Hallo!

Irgendwo hab' ich das hier aufgeschnappt:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
  voice: OLEVariant;
  Text: String;
begin
  Text := 'This is a text';
  voice := CreateOLEObject('SAPI.SpVoice');
  voice.Speak(Text, 0);
  voice := Unassigned;  //Gehört das hierher oder nicht? Oder Voice.Free?


Es funktioniert mit und ohne Unassigned fehlerfrei. Ich frage mich aber, ob man voice überhaupt freigeben muss!


accessViolation - Fr 15.09.06 10:14

Hallo!

Ich habe den Speicher immer mit voice.Free freigegeben.

Im übrigen würde die voice so deklarieren:


Delphi-Quelltext
1:
2:
3:
4:
var   voice: TSpVoice;
// und dann:
begin
   voice := TSpVoice.Create;


Siehe auch hier http://www.microsoft.com/downloads/details.aspx?FamilyId=5E86EC97-40A7-453F-B0EE-6583171B4530&displaylang=en
Hilfedatei sapi.chm

Viele Grüße
DIetmar


galagher - Fr 15.09.06 10:54

user profile iconaccessViolation hat folgendes geschrieben:
Ich habe den Speicher immer mit voice.Free freigegeben.

Ok, das hilft mir!
user profile iconaccessViolation hat folgendes geschrieben:

Im übrigen würde die voice so deklarieren:


Delphi-Quelltext
1:
2:
3:
4:
var   voice: TSpVoice;
// und dann:
begin
   voice := TSpVoice.Create;


Da erhalte ich "Undefinierter Bezeichner: 'TSpVoice'"

//Edit: Bei voice.Free gibt mein Programm die Meldung aus:
"Die Methode 'Free' wird vom Automatisierungsobjekt nicht unterstützt."


accessViolation - Fr 15.09.06 14:01

Hast Du auch die SAPI richtig installiert? Such mal hier im Forum, ich glaube, wurde schon was drüber geschrieben.


galagher - Fr 15.09.06 14:28

user profile iconaccessViolation hat folgendes geschrieben:
Hast Du auch die SAPI richtig installiert?

Naja, Microsoft Sam und Mary sprechen, und der Code, den ich gepostet habe, funktioniert ja auch. Das hier habe ich gefunden:
http://www.delphipraxis.net/post407529.html