我正在制作一个号码转语音节目。我已经记录了所有的声音样本并且正常工作,但每次输入按顺序排列数字(012 ...等)时,它将开始播放剩余的数字到9,与输入相对。 / p>
例如,如果键入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;
答案 0 :(得分:3)
y
变量似乎永远不会重置,这意味着您将文本追加到var1
。但是你总是从0元素开始播放来自var1
的元素的文本长度。
Input Text | Stored text | Played text
0123 0123 0123
876 0123876 012
12345678 012387612345678 01238761
111 012387612345678111 012
听起来像个错误。
还有一些错误:
input.Text
长度未正确重置input.Text
,但您可以使用var1
变量进行游戏。你应该总是迭代并访问相同的数组/字符串!for i := 1 to Length(input.Text) do
var1
for
end;
循环
您也可以自行进行一些调试,通过在“说出”之前输出var1
来显示错误。例如。 ShowMessage(var1)
或类似的;