Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2018, 14:52   #1
Mee_K
 
Регистрация: 04.10.2018
Сообщений: 7
Восклицание Мне нужна программа воспроизведение текста с Memo

Программа должна выполнять следующее:
-После ввода текста в Memo и нажатия на кнопку, запускает аудиофайлы букв поочерёдно с небольшим интервалом (Я знаю, что String для Memo не супер и я знаю, что у меня ошибка в "UpperCase(Memo1.Text[i])", но я не сильно шарю в этом, также не знаю, куда разместить запуск таймера, подскажите)

Код:
Код:
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
If (UpperCase(S[i])>='A') and (UpperCase(S[i])<='Z') then
sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\'+UpperCase(Memo1.Text[i])+'\'+UpperCase(Memo1.Text[i])+'.wav', SND_ASYNC);

end;
end.
Mee_K вне форума Ответить с цитированием
Старый 04.10.2018, 15:19   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а зачем Вам таймер?
Поставьте SND_SYNC и sndPlaySound у Вас будет останавливать основной поток выполнения, пока воспроизводится звуковой файл
Цитата:
{ Flags are:
SND_SYNC =0 = Start playing, and wait for the sound to finish
SND_ASYNC =1 = Start playing, and don't wait to return
SND_LOOP =8 = Keep looping the sound until another sound is played }
p.s. Вы не программу, которая проговаривает текст пытаетесь изобрести?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.10.2018, 09:49   #3
Mee_K
 
Регистрация: 04.10.2018
Сообщений: 7
По умолчанию

Да) Поможете с кодом?
Mee_K вне форума Ответить с цитированием
Старый 08.10.2018, 09:52   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Mee_K Посмотреть сообщение
String для Memo не супер
Это как и что с ним не так?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.10.2018, 10:39   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

А ничего, что звук, соответствующий одной и той же букве, в зависимости от контекста будет разным? Для каждой буквы д.б. несколько звуковых "отрезков", склеивать которые придется в зависимости от ее позиции в слове, от соседних букв. Хотя если проговаривать по буквам, то без проблем - это будет синтезатор с ограниченным словарем. "Эс Эм Е Ха"
В общем, "Говорилка" и прочие читалки нервно курят, чувствуя грядущую конкуренцию

Последний раз редактировалось digitalis; 08.10.2018 в 10:44.
digitalis вне форума Ответить с цитированием
Старый 08.10.2018, 11:00   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Mee_K Посмотреть сообщение
Поможете с кодом?
Код:
S:=Memo1.Text;
P:=PChar(S);
For i:=1 to length(S) do
If (UpperCase(S[i])>='A') and (UpperCase(S[i])<='Z') then begin
   sndPlaySound('C:\Users\Turan\Desktop\Nikita\Sound\'+UpperCase(S[i])+'.wav', SND_SYNC);
   sleep(60); // задержка между соседними буквами
end;
p.s. буквы и звуки - это совсем разные вещи. Так просто "говорилку" сделать не получится. я думаю, что ту какофонию, что будет выдавать программа, речь назвать вообще нельзя.

p.s. вместо Sleep можно использовать процедуру Delay (взял тут):
Код:
procedure Delay(ms: CARDINAL);
var
   n: cardinal;
begin
  n := GetTickCount + ms;
  while getTickCount <= n do Application.ProcessMessage;
end;

Последний раз редактировалось Serge_Bliznykov; 08.10.2018 в 11:04.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.10.2018, 13:46   #7
Mee_K
 
Регистрация: 04.10.2018
Сообщений: 7
По умолчанию

Показывает ошибку в типе файлов, помогите
Изображения
Тип файла: jpg 1.jpg (65.5 Кб, 143 просмотров)
Mee_K вне форума Ответить с цитированием
Старый 10.10.2018, 13:51   #8
Mee_K
 
Регистрация: 04.10.2018
Сообщений: 7
По умолчанию

Я отправил скриншот, может Вы знаете какой тип данных использовать или поменять прям в коде тип, если да, то на какой и как?
Mee_K вне форума Ответить с цитированием
Старый 10.10.2018, 14:08   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Mee_K Посмотреть сообщение
если да, то на какой и как?
Код:
sndPlaySound(Pchar('C:\Users\Turan\Desktop\Nikita\Sound\'+UpperCase(S[i])+'.wav'), SND_SYNC);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.10.2018, 14:19   #10
Mee_K
 
Регистрация: 04.10.2018
Сообщений: 7
По умолчанию

Спасибо, запускает, но не хочет воспроизводить звук, звук ошибки только воспроизводится ровно то количество раз, сколько букв я ввёл. Я подумал, что из-за пути к файлу звука, но нет, я перепроверил и нифига
Mee_K вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как мне сделать рандомное воспроизведение песен в Delphi 7? DEADPOOL5 Общие вопросы Delphi 1 25.04.2016 20:38
нужна программа для замены текста в файлах CorelDraw jut___ Фриланс 3 29.07.2015 18:25
Воспроизведение текста используя SpeechAPI skyll Общие вопросы Delphi 2 26.04.2014 18:08
Delphi передача текста из memo в memo hauk70 Помощь студентам 27 22.05.2012 18:33
Воспроизведение текста с отслеживанием ArcaN0id Общие вопросы Delphi 2 29.02.2012 01:37