Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите пожалуйста, в чём моя ошибка? Delphi 7

Никита Солдатов Профи (544), закрыт 4 года назад
Я хочу создать программу для воспроизведения текста напечатанное в Memo, чтобы программа воспроизводила каждую букву по очереди, но цикл как-то коряво работает

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, mmsystem, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Memo1: TMemo;
Edit1: TEdit;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);

Var
S:String;
i,b:integer;
begin
{
b:=StrToInt(Edit1.Text);
Case b of
1:sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\A\A.wav', SND_ASYNC);
2:sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\B\B.wav', SND_ASYNC);
end;
}

S:=Memo1.Text;

For i:=1 to length(S) do
If Memo1.Text[i]='a' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\A\A.wav', SND_ASYNC)
else
If Memo1.Text[i]='b' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\B\B.wav', SND_ASYNC)
else
If Memo1.Text[i]='c' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\C\C.wav', SND_ASYNC)
else
If Memo1.Text[i]='d' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\D\D.wav', SND_ASYNC)
else
If Memo1.Text[i]='e' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\E\E.wav', SND_ASYNC)
else
If Memo1.Text[i]='f' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\F\F.wav', SND_ASYNC)
else
If Memo1.Text[i]='g' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\G\G.wav', SND_ASYNC)
else
If Memo1.Text[i]='h' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\H\H.wav', SND_ASYNC)
else
If Memo1.Text[i]='i' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\I\I.wav', SND_ASYNC)
else
If Memo1.Text[i]='j' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\J\J.wav', SND_ASYNC)
else
If Memo1.Text[i]='k' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\K\K.wav', SND_ASYNC)
else
If Memo1.Text[i]='l' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\L\L.wav', SND_ASYNC)
else
If Memo1.Text[i]='m' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\M\M.wav', SND_ASYNC)
else
If Memo1.Text[i]='n' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\N\N.wav', SND_ASYNC)
else
If Memo1.Text[i]='o' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\O\O.wav', SND_ASYNC)
else
If Memo1.Text[i]='p' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\P\P.wav', SND_ASYNC)
else
If Memo1.Text[i]='q' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\Q\Q.wav', SND_ASYNC)
else
If Memo1.Text[i]='r' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\R\R.wav', SND_ASYNC)
else
If Memo1.Text[i]='s' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\S\S.wav', SND_ASYNC)
else
If Memo1.Text[i]='t' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\T\T.wav', SND_ASYNC)
else
If Memo1.Text[i]='u' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\U\U.wav', SND_ASYNC)
else
If Memo1.Text[i]='v' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\V\V.wav', SND_ASYNC)
else
If Memo1.Text[i]='w' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\W\W.wav', SND_ASYNC)
else
If Memo1.Text[i]='x' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\X\X.wav', SND_ASYNC)
else
If Memo1.Text[i]='y' then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\Y\Y.wav', SND_ASYNC)
else
If Memo1.Text[i]='z' then
begin
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\Z\Z.wav', SND_ASYNC);
end

end;

end.
Дополнен 6 лет назад
Скиньте правильный код, пожалуйста!!!

procedure TForm1.Button1Click(Sender: TObject);
Var
P:PChar;
S:String;
i:integer;
begin

S:=Memo1.Text;
P:=PChar(S);
For i:=1 to length(S) do
Timer1.Enabled:=True;
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\'+UpperCase(Memo1.Text[i])+
'\'+UpperCase(Memo1.Text[i])+'.wav', SND_ASYNC);
Timer1.Enabled:=False;
end;

end.
Лучший ответ
Jurii Высший разум (176880) 6 лет назад
Никита СолдатовПрофи (544) 6 лет назад
Ругается, что не Boolean символ S
www www Искусственный Интеллект (137930) Что-то со скобками начудили. Скрин давайте
Остальные ответы
imobilazer Искусственный Интеллект (222652) 6 лет назад
Подозреваю что от того что цикл пробегает быстро, а звук имеет продолжительность, нужно паузу ставить при переборе
и зачем столько if если можно сделать так:

sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\'+UpperCase(Memo1.Text[i])+'\'+UpperCase(Memo1.Text[i])+'.wav', SND_ASYNC);
Никита СолдатовПрофи (544) 6 лет назад
[Ошибка] Unit1.pas(48): Incompatible types: 'String' and 'PAnsiChar', поставив курсор на запятую " +'.wav', SND_ASYNC); "
Никита СолдатовПрофи (544) 6 лет назад
Ругается именно на UpperCase
imobilazer Искусственный Интеллект (222652) Учись читать ошибки, типы разные _http://cyberforum.ru/delphi-beginners/thread43521.html
Никита СолдатовПрофи (544) 6 лет назад
Скинь готовый код пожалуйста
www www Искусственный Интеллект (137930) 6 лет назад
И еще присваивать string-у Memo.text при длинном меме чревато. Лучше обрабатывайте прямо мемо построчно.
BOBAH Просветленный (41552) 6 лет назад
я в шоке!
а упростить религия не позволяет?
Похожие вопросы