Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Problem bei Morsecode Translator


-Nala- - Di 29.04.08 14:26
Titel: Problem bei Morsecode Translator
Hallo!

Vor kurzem habe ich angefangen ein Programm zu schreiben, dass den Text, den man in ein Edit-Feld eintippt in MorseCode sprache wieder ausgibt. Unzwar mit einer Tonausgabe.

Nun zu meinem Problem:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button1Click(Sender: TObject);
var   i : integer;
begin
  Lange := length(edit1.text);

  for i := 1 to Lange do
    begin
      if edit1.Text[i] = 'A' then
        begin
          sndPlaySound('piepkurz.wav', SND_ASYNC);
          sndPlaySound('pieplang.wav', SND_ASYNC);
        end;
    end;
end;


Füre ich das Program aus und gebe ein großes A in das Edit-Feld ein und drücke den Button spielt er mir einfach die beiden Piep Töne direkt hintereinander aus. Es gibt keine Pause dazwischen. Wie kann ich im Prinzip zwischen die beiden Piep töne eine Pause einfügen ?


elundril - Di 29.04.08 14:40

schau dir mal die funktionen beep und sleep an. mit windows.beep kannst du einen ton in einer bestimmten höhe für eine bestimmte länge abspielen (dadurch fallen mal deine wavs weg) und mit sleep kannst du dein programm für eine bestimmte zeit "einschlafen" lassen.

wichtig für dich vieleicht auch die Funktion UpperCase. das wandelt einen buchstaben in einen großbuchstaben um. damit kannst du groß und klein a in einer if abfrage prüfen.

weiter würd ich dir eine case-anweisung empfehlen da es sich bei deiner abfrage um eine Char-abfrage handelt und man mit case das schöner (und effizienter) lösen könnte.

lg elundril


Marc. - Di 29.04.08 14:42

user profile iconElundril hat ja bereits das wesentliche geschrieben. Eine weitere Alternative wäre, Deine Wave-Dateien um ein kurzes lautloses Stück zu verlängern. ;)


Narses - Di 29.04.08 14:46
Titel: Re: Problem bei Morsecode Translator
Moin!

user profile iconMarc. hat folgendes geschrieben:
Eine weitere Alternative wäre, Deine Wave-Dateien um ein kurzes lautloses Stück zu verlängern. ;)
...bzw. einfach eine kurze und eine lange Pause als Wavedatei anzulegen (dann kann man es auch austauschen - im Gegensatz zur Beep-Lösung ;)).


Delphi-Quelltext
1:
sndPlaySound('piepkurz.wav'SND_SYNC);                    
...und natürlich mit SND_SYNC abspielen, damit auch auf das Ende des Soundfiles gewartet wird. :idea:

cu
Narses