Я делаю программу преобразования числа в речь. У меня есть все записанные и работающие образцы голоса, но каждый раз, когда на входе есть числа в последовательном порядке (012 ... и т. Д.), Он начинает воспроизводить остальные числа до 9 против ввода.
Например, если набрать 24601, будет сказано:
2..4..6..0..1 .. 2..3..4..5..6..7..8..9..0 ..
Так не должно быть. Он даже заменит оставшиеся числа в последовательности, если они есть.
Полный код: http://pastebin.com/vFfBRYUu
Вот блок кода оскорбления. Если понадобятся оставшиеся части, я их выложу:
procedure TForm1.Button1Click(Sender: TObject);
begin
for i := 0 to Length(input.Text) do
begin
case var1[i] of
'0': PlaySound('zero.wav',0,SND_SYNC);
'1': PlaySound('one.wav',0,SND_SYNC);
'2': PlaySound('two.wav',0,SND_SYNC);
'3': PlaySound('three.wav',0,SND_SYNC);
'4': PlaySound('four.wav',0,SND_SYNC);
'5': PlaySound('five.wav',0,SND_SYNC);
'6': PlaySound('six.wav',0,SND_SYNC);
'7': PlaySound('seven.wav',0,SND_SYNC);
'8': PlaySound('eight.wav',0,SND_SYNC);
'9': PlaySound('nine.wav',0,SND_SYNC);
'-': Delay(400);
'&': PlaySound('start.wav',0,SND_SYNC);
'*': PlaySound('call to mess.wav',0,SND_SYNC);
end;
Delay(100);
end;
Вход в массив:
procedure TForm1.inputChange(Sender: TObject);
begin
y := y+1;
var1[y-1] := input.Text[y]
end;
y
? Где вы устанавливаете и обновляете длинуvar1
? - person Kromster   schedule 15.01.2015Length(input.Text);
- длина. Кроме того, более крупный блок кода активируется только после того, как пользователь завершил набор текста. - person Soprano Aurora   schedule 15.01.2015var1
, но всегда воспроизводите элементы 0..TextLength ... как вы думаете, это может быть вашей ошибкой? ;-) - person Kromster   schedule 15.01.2015