Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 890
от 09.08.2007, 20:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 469, Экспертов: 74
В номере:Вопросов: 3, Ответов: 10


Вопрос № 97270: Ув. эксперты! скажите пожалуста как пишется обработка процедуры запуска аудио файла. Также скажите плиз как пишется процедура изменения шрифта поле редактирования(во время программы), вот как в блокноте например можно менять шрифт. Заранее огромн...
Вопрос № 97335: Здравствуйте, Уважаемые Эксперты!!! У меня к Вам такая просьба: не могли бы Вы мне вот к этому исходнику программы «перевод арабских чисел в римские» дать, как можно исчерпывающее пояснение (к каждой строчке)? Эксперты, подскажите еще, п...
Вопрос № 97337: Подскажите, Как принудительно продолжить выполнение цикла for, через заданное время, например через 1 минуту? Как сделать паузу в цикле по кнопке?...

Вопрос № 97.270
Ув. эксперты! скажите пожалуста как пишется обработка процедуры запуска аудио файла. Также скажите плиз как пишется процедура изменения шрифта поле редактирования(во время программы), вот как в блокноте например можно менять шрифт.
Заранее огромное спасибо.
5 обеспечено.

Приложение:

Отправлен: 03.08.2007, 19:58
Вопрос задал: Патрикеев Сергей (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: 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

Приложение:

---------
Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО

Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 04.08.2007, 17:23
Оценка за ответ: 5

Отвечает: Виктор Пырлик
Здравствуйте, Алена!

Вы, почему то, просто вставили в обработчик метода нажатия кнопки, совершено самостоятельную функцию. Поэтому компилятор и «ругается». В приложении дана правильная реализация.
Просто замените у себя:
Удалите весь блок
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 минуту?
Как сделать паузу в цикле по кнопке?
Отправлен: 04.08.2007, 18:05
Вопрос задал: Крылов В.В. (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Василенко Алексей Васильевич
Здравствуйте, Крылов В.В.!
проистановить выполнение цикла фор можно используя 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.54 beta от 01.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное