Вопрос № 97270: Ув. эксперты! скажите пожалуста как пишется обработка процедуры запуска аудио файла. Также скажите плиз как пишется процедура изменения шрифта поле редактирования(во время программы), вот как в блокноте например можно менять шрифт.
Заранее огромн...Вопрос № 97335: Здравствуйте, Уважаемые Эксперты!!!
У меня к Вам такая просьба: не могли бы Вы мне вот к этому исходнику программы «перевод арабских чисел в римские» дать, как можно исчерпывающее пояснение (к каждой строчке)?
Эксперты, подскажите еще, п...Вопрос № 97337: Подскажите,
Как принудительно продолжить выполнение цикла for, через заданное время, например через 1 минуту?
Как сделать паузу в цикле по кнопке?...
Вопрос № 97.270
Ув. эксперты! скажите пожалуста как пишется обработка процедуры запуска аудио файла. Также скажите плиз как пишется процедура изменения шрифта поле редактирования(во время программы), вот как в блокноте например можно менять шрифт.
Заранее огромное спасибо.
5 обеспечено.
Отвечает: W@NDeReR
Здравствуйте, Патрикеев Сергей!
Ставить на форму Memo, FontDialog(с вкладки Dialogs) и 2-а Button и по двойному щелчку на Button1 пишем:
//Изменение шрифта
if FontDialog1.Execute then
Memo1.Font.Name:=FontDialog1.Font.Name;
По Button2:
//Запускаеться проигрователь по умолчанию и проигровает аудио файл
ShellExecute(Handle,'open','Путь к аудио файлу',nil,nil,SW_RESTORE);
--------- Опыт — дитя мысли, а мысль — дитя действия. Нельзя учиться по книгам.
Ответ отправил: W@NDeReR (статус: 5-ый класс)
Ответ отправлен: 03.08.2007, 20:27 Оценка за ответ: 5
Отвечает: Woodli
Здравствуйте, Патрикеев Сергей!
Если вы используете стандартный компонент MediaPlayer то стоит записать в свойство MediaPlayer.FileName адрес к файлу затем его открыть MediaPlayer.Open ну а потом можно и воспрроизвести MediaPlayer.Play
Примерный код процедуры смотрите в приложении.
Установите компонент FontDialog пропишите в процедуре следуюшее:
if FontDialog.Execute then begin
//сдесь укажите какие свойства надо переписать у необходимого компонента взяв их из FontDialog например:
memo.font.color:=FontDialog.Font.Color;
end;
Приложение:
Ответ отправил: Woodli (статус: 1-ый класс)
Ответ отправлен: 05.08.2007, 19:33
Отвечает: Mishell
Здравствуйте, Патрикеев Сергей!
см. в прилоржении пример запуска файла (любого, аудио или нет)
а шрифт меняется очень просто - например так:
Memo1.Font.Name:='Arial';
Приложение:
Ответ отправил: Mishell (статус: 4-ый класс)
Ответ отправлен: 06.08.2007, 09:37
Вопрос № 97.335
Здравствуйте, Уважаемые Эксперты!!!
У меня к Вам такая просьба: не могли бы Вы мне вот к этому исходнику программы «перевод арабских чисел в римские» дать, как можно исчерпывающее пояснение (к каждой строчке)?
Эксперты, подскажите еще, почему Делфи всегда подчеркивает end? Я уже все перепробовала – и количество end меняла, но все равно программка не запускается.
Заранее всем БОЛЬШОЕ СПАСИБОЧКИ!!!!:-)))
Приложение:
Отправлен: 04.08.2007, 17:07
Вопрос задала: Алена (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Архангельский Андрей Германович
Здравствуйте, Алена!
Правильная запись и форматирование текста часто позволяет найти ошибки
Ваш текст правильно выглядит так - в приложении - пропущен один begin и один end
Приложение:
--------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Вы, почему то, просто вставили в обработчик метода нажатия кнопки, совершено самостоятельную функцию. Поэтому компилятор и «ругается». В приложении дана правильная реализация.
Просто замените у себя:
Удалите весь блок procedure TForm1.Button1Click(Sender: TObject)
…………….
end; - это последний «end» для данной процедуры
и на это место вставьте код из приложения.
Приложение:
--------- Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 04.08.2007, 17:41 Оценка за ответ: 5
Отвечает: Mishell
Здравствуйте, Алена!
Вы скорее-всего неправильно скопировали приведенную часть кода в вашу программу - поэтому у Вас с end'ами и проблемы
см. приложение, я там указал где начинается и заканчивается процедура и сама функция перевода соответственно...
Приложение:
Ответ отправил: Mishell (статус: 4-ый класс)
Ответ отправлен: 06.08.2007, 10:06 Оценка за ответ: 5
Вопрос № 97.337
Подскажите,
Как принудительно продолжить выполнение цикла for, через заданное время, например через 1 минуту?
Как сделать паузу в цикле по кнопке?
Отвечает: Василенко Алексей Васильевич
Здравствуйте, Крылов В.В.!
проистановить выполнение цикла фор можно используя sleep(time) time - в мс.
приостановить віполнение for по кнопке,ИМХО, невозможно
Изложите суть проблемы, ибо из описания не совсем ясно. что именно нада сделать.
P.S.: возможно решение проблемы возможно при использовании циклов while () и doWhile
--------- Готовых решений небыло, нет и не будет... вся жизнь - это лишь размышления на тему
Ответ отправил: Василенко Алексей Васильевич (статус: 4-ый класс)
Ответ отправлен: 04.08.2007, 18:21 Оценка за ответ: 5
Отвечает: Виктор Пырлик
Здравствуйте, Крылов В.В.!
Продолжение цикла можно после вызова функции sllep(время в милисикундах) в теле цикла – это даст остановку цикла на это время и передачи ресурсов системе.
Сделать паузу в цикле по нажатию кнопки не получится. Вы просто не получите доступ к этой кнопке на время выполнения цикла – все операции выполняются последовательно во времени а не параллельно. Для эмуляции параллельного выполнения, необходимо запустить цикл в отдельно потоке и уже там организовать нужную логику.
Команда выхода из цикла – break
Команда перехода на следующую итерацию цикла с пропуском нижележащих команд - continue
--------- Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 04.08.2007, 18:25 Оценка за ответ: 5
Отвечает: mvp
Здравствуйте, Крылов В.В.!
Заводим глобальную перепенную (назовём её sem). Перед входом в цикл ставим в false. В теле цикла пишем
while sem do begin
ProcessMessages;
sleep(100)
end;
ProcessMessages;
Последний ProcessMessages можно вызывать не на каждой итерации, а например (если i - переменная цикла) на каждой 13-й:
if i mod 13 = 0 then ProcessMessages;
Далее, в обработчике нажатия кнопки, устанавливаем sem := true, запускаем таймер, который на одну минуту включён. В обработчике таймера выключаем таймер и устанавливаем sem := false;
ProcessMessages - позволяет системе обработать сообщения, если бы его не было, то ни нажатия на кнопку, ни события таймера не пришло бы, пока цикл не отработал полностью
--------- Моя совесть чиста - не бывшая в употреблении
Ответ отправил: mvp (статус: Студент)
Ответ отправлен: 04.08.2007, 19:54 Оценка за ответ: 5
Отвечает: Дмитрий С.
Здравствуйте, Крылов В.В.!
можно использовать функцию sleep(время_простоя_в_миллисекундах);
--------- Наши программисты самые программистые программисты!..
Ответ отправил: Дмитрий С. (статус: 3-ий класс)
Ответ отправлен: 06.08.2007, 12:42 Оценка за ответ: 3