AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

spvoice ist zu langsam

Ein Thema von blinder007 · begonnen am 31. Mär 2013 · letzter Beitrag vom 31. Mär 2013
Antwort Antwort
blinder007

Registriert seit: 29. Mär 2013
30 Beiträge
 
#1

spvoice ist zu langsam

  Alt 31. Mär 2013, 16:59
Hallo Community, und schon wieder ein problem - oder ich bin zu dumm für diese programmiersprache
folgendes:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Spvoice1.Volume:= 100;
if key = vk_right then begin
xk:=xk+1;
yk:=0;
end else if key = vk_left then begin
if xk > 0 then begin
xk:=xk-1;
yk:=0;
end;
end;
spvoice1.Speak(inttostr(xk)+'\'+inttostr(yk), 1);
end;

xk und yk sind globale Variablen

dabei tritt folgendes problem auf:
drücke ich pfeil rechts wird mir angesagt 1\0 drücke ich aber 3x schnell werden mir erst alle vorherigen Koordinaten angesagt. hat jemand eine Idee, wie dies zu lösen ist?
bei meiner suche mit google stieß ich auf "spvoice.skip('word', maxint)", das erzeugt aber nur einen fehler
grüße blinder007
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: spvoice ist zu langsam

  Alt 31. Mär 2013, 17:27
Jeder Tastendruck löst einen KeyEvent aus, der wiederum die Sprachausgabe ansteuert. Mehrere Tastendrücke speichert Windows in der Message-Queue und arbeitet sie nacheinander ab. Das Verhalten ist also durchaus nachvollziehbar.

Wenn es nicht das ist was du willst, dann sag doch mal, was du willst.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
blinder007

Registriert seit: 29. Mär 2013
30 Beiträge
 
#3

AW: spvoice ist zu langsam

  Alt 31. Mär 2013, 17:37
hallo Uwe,
die idee ist, dass bei jedem Tastendruck die koordinate angesagt wird und bei ggf. schnellem tastendruck die Felder, die übersprungen wurden, nicht angesagt werden.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#4

AW: spvoice ist zu langsam

  Alt 31. Mär 2013, 18:07
Das würde ich mit einem Timer erledigen.

Das Timer-Intervall z.B. auf 500 (ms) setzen und den Timer im KeyEvent neu starten (Enabled einmal auf false und dann wieder auf true setzen).

Im Timer-Event selbst dann Enabled auf false (sonst quaselt er weiter). Die Voice-Ausgabe erfolgt dann ausschließlich im Timer-Event.

Etwa so (nur so eingetippt):

Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  Timer1.Enabled := false;
  if key = vk_right then begin
    xk:=xk+1; // Überprüfung auf Max-Wert fehlt!
    yk:=0;
  end
  else if key = vk_left then begin
    if xk > 0 then begin
      xk:=xk-1;
      yk:=0;
    end;
  end;
  Timer1.Enabled := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := false;
  Spvoice1.Volume:= 100;
  spvoice1.Speak(inttostr(xk)+'\'+inttostr(yk), 1);
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
blinder007

Registriert seit: 29. Mär 2013
30 Beiträge
 
#5

AW: spvoice ist zu langsam

  Alt 31. Mär 2013, 18:22
hallo Uwe,
danke für den hilfreichen tipp, es funktioniert super. zu beginn hatte ich auch die Idee mit einem Timer zu arbeiten, nur wesentlich komplizierter, über variablen usw.
danke für die Hilfe
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: spvoice ist zu langsam

  Alt 31. Mär 2013, 18:25
... oder ich bin zu dumm für diese programmiersprache
Sicher nicht, aber du könntest darauf achten, den Code, den du postest, in den sog. Delphi-Tags zu positionieren. Dazu markierst du einfach deine Code-Zeilen im Foren-Editor und drückst dann den Button mit dem wohlbekannten Delphi-Helm. Und schon werden deine Code-Zeilen auch als solche erkennbar, wie du danach mit einem Klick auf den Vorschau-Button selbst sehen kannst.

Noch besser lesbar wäre dein Code, wenn du ein wenig auf Formatierung achten könntest, so daß zumindest Begin-End-Konstrukte leicht zu erkennen sind.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:07 Uhr.
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