Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Sprachausgabe funktioniert nur im Debug-Modus (https://www.delphipraxis.net/162054-sprachausgabe-funktioniert-nur-im-debug-modus.html)

luke2 3. Aug 2011 17:40

Delphi-Version: XE

Sprachausgabe funktioniert nur im Debug-Modus
 
Hi,

Der folgende Code zur Sprachausgabe funktioniert im Debug-Modus problemlos und wenn man die exe-Datei direkt aus dem Explorer startet gibt es eine "ungültige Gleitkommadivision" bzw. eine "Division durch Null" als Fehler.

Kann mir jemand sagen warum das so ist und wie ich diesen Fehler beheben kann?

Delphi-Quellcode:
var
  voice: OLEVariant;
begin
  voice := CreateOLEObject('SAPI.SpVoice');
  voice.speak('Hello World!', 0);
end;
Getestet mit Delphi XE und Delphi 2007.

Chemiker 3. Aug 2011 18:29

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Hallo luke2,

verwendest Du Win 7, so gibt es Probleme, unter XP (oder XP-Mode) sollte es eigentlich funktionieren.

Bis bald Chemiker

luke2 3. Aug 2011 19:06

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Ja, ich benutze Win7 (x64). Schade.

Gibt es auch unter Win7 die Möglichkeit einer stabilen Sprachausgabe?

Chemiker 3. Aug 2011 19:22

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Hallo luke2,

ich habe das nicht weiter verfolgt, weil es nicht möglich war eine deutsche Ausgabe mit Win 7 zu realisieren(oder nicht so einfach), allerdings kann sich das Mittlerweile geändert haben.

Bis bald Chemiker

luke2 3. Aug 2011 19:40

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
OK, Danke Chemiker. Dann werde ich mal suchen.

grizzly 3. Aug 2011 19:55

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Hier habe ich was gefunden: http://stackoverflow.com/questions/3...text-to-speech
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  voice: OLEVariant;
  SavedCW: Word;
begin
  voice := CreateOLEObject('SAPI.SpVoice');
  SavedCW := Get8087CW;
  Set8087CW(SavedCW or $4);
  voice.speak('Hello World!', 0); // Funktioniert nur, solange hier 0 steht
  Set8087CW(SavedCW);
end;
Das speak im obigen Beispiel funktioniert nur, solange es nicht asynchron (Parameter 1 statt 0) aufgerufen wird, weil das Objekt am Ende der Prozedur aufgeräumt wird, noch bevor der Rechner zu Sprechen begonnen hat. Also ganz so wie hier im Beispiel sollte man es nicht umsetzen ;)

Müßte man nicht eigentlich beim Programmstart noch ein CoInitialize(nil) machen?

Gruß
Michael

luke2 3. Aug 2011 20:02

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Super, Vielen Dank grizzly, damit funktioniert es :thumb:

rollstuhlfahrer 3. Aug 2011 20:03

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Zitat:

Zitat von grizzly (Beitrag 1114968)
Müßte man nicht eigentlich beim Programmstart noch ein CoInitialize(nil) machen?

CoInitialize / OleInitialize übernimmt die VCL für dich. Solange du also die VCL benutzt, brauchst du dich um sowas nicht zu kümmern.

Bernhard

luke2 3. Aug 2011 20:16

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Funktioniert doch nicht so ganz, nach ein paar Aufrufen kommt der gleiche Fehler... :(

Peter1999 3. Aug 2011 20:54

AW: Sprachausgabe funktioniert nur im Debug-Modus
 
Hast du dir das Tutorial schon einmal angesehen CLICK ?
Das funktioniert bei mir super, auch unter Win7 64bit.

Viele Grüße...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz