首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Lazarus - .wav文件按顺序播放

Lazarus - .wav文件按顺序播放
EN

Stack Overflow用户
提问于 2015-01-15 05:46:36
回答 1查看 838关注 0票数 0

我在做一个电话对讲节目。我把所有的语音样本都记录下来了,而且都在工作,但是每次输入都是按顺序排列的(012.等),它将开始播放其余的数字到9,针对输入。

例如,如果输入了24601,它会说:

2..4..6..0..1..2..3..4..5..6..7..8..9..0..

它不应该那样做的。它甚至将超过剩余的数字与序列,如果有任何。

完整代码:http://pastebin.com/vFfBRYUu

这是违规的代码块。如果你需要剩下的部分,我会把它们放起来:

代码语言:javascript
运行
复制
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;                     

输入到数组:

代码语言:javascript
运行
复制
procedure TForm1.inputChange(Sender: TObject);
begin
  y := y+1;
  var1[y-1] := input.Text[y]
end;             
EN

回答 1

Stack Overflow用户

发布于 2015-01-15 06:21:08

y变量似乎从不重置,这意味着将文本附加到var1中。但是您可以播放var1中的元素的文本长度,总是从0元素开始。

代码语言:javascript
运行
复制
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)或类似的;

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27957458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档