我在做一个电话对讲节目。我把所有的语音样本都记录下来了,而且都在工作,但是每次输入都是按顺序排列的(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;
发布于 2015-01-15 06:21:08
y
变量似乎从不重置,这意味着将文本附加到var1
中。但是您可以播放var1
中的元素的文本长度,总是从0元素开始。
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
来隔离bug。例如由ShowMessage(var1)
或类似的;
https://stackoverflow.com/questions/27957458
复制相似问题