![]() |
Delphi-Version: 7
Sprachausgabe in Thread
Hallo,
ich versuche einen Thread zu schreiben, der einen String per Sprachausgabe ausgibt, aber ich bekomme beim Aufruf die EOIeException "CoInitialize wurde nicht aufgerufen", obwohl ich das explizit aufrufe. Hier mein Thread-Code:
Delphi-Quellcode:
unit UThreadSpeak;
interface uses Classes, ComObj, SysUtils, ActiveX; type TSpeak = class(TThread) private { Private declarations } txt: string; stimme: Olevariant; destructor Destroy; override; protected procedure Execute; override; public constructor Create(text: string); end; implementation { TSpeak } constructor TSpeak.Create(text: string); begin inherited Create(true); txt:=text; FreeOnTerminate:=true; CoInitialize(nil); Stimme:=CreateOleObject('SAPI.SpVoice'); Suspended:=false; end; destructor TSpeak.Destroy; begin CoUninitialize; inherited destroy; end; procedure TSpeak.Execute; begin Stimme.speak(txt); end; end. |
AW: Sprachausgabe in Thread
Ich würde es mal so versuchen.
Code:
procedure TSpeak.Execute;
begin CoInitialize(nil); try Stimme.speak(txt); finally CoUninitialize; end; end; |
AW: Sprachausgabe in Thread
Genau das. Setz dir doch einfach mal einen Haltepunkt im Debugger - Dann siehst du nur Execute auch wirklich das ist was im Thread ausgeführt wird. Create nicht, das wird natürlich im Kontext des Threads ausgeführt der Create auch aufruft.
|
AW: Sprachausgabe in Thread
Danke, alles klar! :-D
|
AW: Sprachausgabe in Thread
Jupp, Create ist noch im startenden Thread und Destroy ... mal hier und mal da. (entsprechend FreeOnTerminate)
Nur Execute läuft im Thread und was "nur" in den Thread gehört, gehört auch nur dort rein.
Delphi-Quellcode:
Brauchst nicht.
inherited Create(true);
//und Suspended:=false; Wenn Suspended, dann wird der Thread sowieso erst im AfterCreate gestartet, also immer erst nach dem Create.
Delphi-Quellcode:
reicht also.
inherited Create(False);
|
AW: Sprachausgabe in Thread
Schonmal
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz