AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Vorleseprogramm liest nicht vor :)
Thema durchsuchen
Ansicht
Themen-Optionen

Vorleseprogramm liest nicht vor :)

Ein Thema von MisterNiceGuy · begonnen am 29. Jan 2004 · letzter Beitrag vom 1. Feb 2004
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#1

Vorleseprogramm liest nicht vor :)

  Alt 29. Jan 2004, 11:44
Hi, hab hier mal angefangen eine Procedure zu schreiben, die ein Memo Buchstabe für Buchstabe durchgeht und jeden einzelnen vorliest. Jedoch tut sie das nicht
Wäre nett, wenn mir mal wer sagen könnte, woran das liegt.
Code:
procedure TForm1.play;
var buco, lico:integer;
var zeile:string;
begin
for lico:=0 to memo1.Lines.Count-1 do begin
           zeile := memo1.Lines[lico];
    for buco:=0 to length(zeile) do begin
        case zeile[buco] of
             'a' : begin
                     MP1.FileName := '/a.wav';
                     MP1.Play;
                   end;
             'b' : begin
                     MP1.FileName := '/b.wav';
                     MP2.Play;
                   end;
             'c' : begin
                         if ((zeile[buco-1] = 'a') OR (zeile[buco-1] = 'o') OR (zeile[buco-1] = 'u')) AND (zeile[buco+1] = 'h') then
                         begin
                              mp1.FileName := '/chr.wav';
                              mp1.Play;
                         end;
                         if ((zeile[buco-1] = 'i') OR (zeile[buco-1] = 'e')) AND (zeile[buco+1] = 'h') then
                         begin
                              mp1.FileName := '/ch.wav';
                              mp1.Play;
                         end;
                         if zeile[buco+1] = 'k' then
                         begin
                              mp1.FileName := '/ck.wav';
                              mp1.Play;
                         end;
                     if ((zeile[buco+1] <> 'h') AND (zeile[buco+1] <> 'k')) then
                     begin
                        MP1.FileName := '/c.wav';
                        MP1.Play;
                   end;
                   end;
             'd' : begin
                     MP1.FileName := '/d.wav';
                     MP1.Play;
                   end;
             'e' : begin
                     if zeile[buco+1] = 'i' then begin
                               MP1.FileName := '/ei.wav';
                               MP1.Play;
                               end
                     else begin
                     MP1.FileName := '/e.wav';
                     MP1.Play;
                     end;
                   end;
             'q' : begin
                     if zeile[buco+1] = 'u' then begin
                              MP1.FileName := '/qu.wav';
                              MP1.Play;
                              end
                              else begin
                     MP1.FileName := '/q.wav';
                     MP1.Play;
                     end;
                   end;
             'r' : begin
                     MP1.FileName := '/r.wav';
                     MP1.Play;
                   end;
             's' : begin
                     if ((zeile[buco+1] = 'c') AND (zeile[buco+2] = 'h')) then begin
                              MP1.FileName := '/sch.wav';
                              MP1.Play;
                              end
                              else
                     if (zeile[buco+1] = 's') then begin
                              MP1.FileName := '/ss.wav';
                              MP1.Play;
                              end
                              else begin
                     MP1.FileName := '/s.wav';
                     MP1.Play;
                     end;
                   end;

     end;
end;
end;
memo1.Enabled := true;
end;
Ich hab einige Buchstaben rausgenommen, da es sonst zu viel Text ist...

Buco ist ein Counter für die Buchstaben und Lico einer für die Zeilen des Memos.
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Vorleseprogramm liest nicht vor :)

  Alt 29. Jan 2004, 11:47
Das liegt an den Dateinamen - wo sind die zugehörigen Dateien gespeichert? Nimm mal den Slash (/) weg.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#3

Re: Vorleseprogramm liest nicht vor :)

  Alt 29. Jan 2004, 11:50
Die Dateien befinden sich im selben Verzeichnis wie das Programm. Er liest immer nur den ersten Buchstaben vor. Wenn ich 2 Mediaplayer einbaue, dann liest er auch das b, aber halt nur, wenn es an erster Stelle steht. Da muss irgendwo ein Fehler in den For-Schleifen sein...
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#4

Re: Vorleseprogramm liest nicht vor :)

  Alt 29. Jan 2004, 11:54
Hab noch nie mit Mediaplayer gearbeitet, aber kann es sein, dass man den wieder freigeben muss, bevor man ein neues Soundfile laden kann?

btw: Warum schreibste dir nicht ne Play-Function, der du in der Case-Struktur nur den Dateinamen übergibst. Das würde ne Menge Zeilen sparen und das ganze etwas übersichtlicher machen.

Edit: Noch ne Idee: Wartet das Programm, bis der Mediaplayer zu Ende gespielt hat oder kann es auch sein, dass der die Schleife schon komplett abgearbeitet hat, bevor der erste Buchstabensound zu Ende gespielt ist?
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#5

Re: Vorleseprogramm liest nicht vor :)

  Alt 29. Jan 2004, 12:02
Guter Tip! Danke, das ist mir garnicht eingefallen Werde mal ein paar sleeps reinsetzen.
Vielleicht optimier ich dann noch ein bischen, aber erstmal gucken ob es geht

danke!
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Vorleseprogramm liest nicht vor :)

  Alt 29. Jan 2004, 12:30
Und nimm mal absolute Pafde anstatt relative. Dass er dei dateien findet ist reine Glückssache.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Schubi

Registriert seit: 4. Nov 2003
Ort: Happurg (Nürnberg)
331 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Vorleseprogramm liest nicht vor :)

  Alt 29. Jan 2004, 12:42
mediaplayer1.Wait := True Dann Play, dein Programm wartet automatisch bis die Datei abgespielt ist. Gleicher Fall beim öffnen, auch hier wartet er!

Praktisch, oder?!
Christian Schubert
Ich fange gerade erst an, den Umfang meiner Ahnungslosigkeit zu begreifen...
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#8

Re: Vorleseprogramm liest nicht vor :)

  Alt 29. Jan 2004, 12:43
Zitat von MisterNiceGuy:
Code:
        case zeile[buco] of
             'a' : begin
                     MP1.FileName := '/a.wav';
                     MP1.Play;
                   end;
             'b' : begin
                     MP1.FileName := '/b.wav';
                     MP2.Play;
                   end;
             'd' : begin
                     MP1.FileName := '/d.wav';
                     MP1.Play;
                   end;
Ich hab einige Buchstaben rausgenommen, da es sonst zu viel Text ist...
Okay, den case bei c wegen z.B. ch ist okay, aber warum machst Du nicht folgendes:

Delphi-Quellcode:
  case zeile[buco] of
      c: begin
         ...
         end;
      // alle weiteren spezialverhalten
  else
    begin
      MP1.FileName := zeile[buco] + '.wav';
      MP1.Play;
    end;
  end;
... ich meine, wenn der Buchstabe eh schon Teil vom Dateinamen ist, warum dann so viel tippen und nicht einfach dynamisch zusammenbauen?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von trifid
trifid

Registriert seit: 12. Sep 2003
297 Beiträge
 
#9

Re: Vorleseprogramm liest nicht vor :)

  Alt 29. Jan 2004, 12:59
@MisterNiceGuy
aber warum verwendest Du nicht eine TTS-Engine (Text-To-Speech) die das für dich macht ?
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#10

Re: Vorleseprogramm liest nicht vor :)

  Alt 29. Jan 2004, 15:16
@Phoenix: Vielen Dank für den Tip, ich werd das Programm dann am Ende noch ein bisschen pressen. Hätte nie gedacht, dass das so klein wird! Sind insgesamt nicht mal 500KB inc. Soundfiles!

@trifid: Das tolle an Delphi ist ja, dass man seine eigenen Programme schreiben kann
Wollte nurmal versuchen, ob ich das hinkriege, die Idee gefällt mir total gut

Allerdings ist es sehr schwer, die einzelnen Laute so aufzunehmen, dass sie sich echt anhören, man müsste sie zur Laufzeit noch etwas verändern können. (Z.B. Tonhöhnen bei Satzenden etc.)
Kennt da einer ne Seite, wo es so ein Tutorial gibt??
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 19:43 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