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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 1023
от 30.12.2007, 22:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 437, Экспертов: 59
В номере:Вопросов: 2, Ответов: 6

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 115820: Здравствуйте Уважаемые Специалисты! Я самостоятельно учусь программировать с Дельфи 7 и вот какой у меня вопрос: Я создал небольшую программу и во время исполнения программы проигрывается звуковой файл. Я использовал стандартный...
Вопрос № 115851: Здраствуйте. Опять я к Вам =) Продолжаю писать свою ацкую програмулину... и каждую неделю открывая че то новенькое, наталкиваюсь на не обьяснимые вещи=) Вот как бы то, на что я наткнулся: Моя программа через shellexecute запускает дру...

Вопрос № 115.820
Здравствуйте Уважаемые Специалисты!

Я самостоятельно учусь программировать с Дельфи 7
и вот какой у меня вопрос:

Я создал небольшую программу и во время исполнения программы проигрывается звуковой файл. Я использовал стандартный Медиа плеер, указал Visible:=False; и выбрал путь к звуковому файлу а также указал запуск Медиа плеера:

MediaPlayer.FileName:=('имя звукового файла');
MediaPlayer.Open;
MediaPlayer.Play;

И вот проблема: Если я хочу поделиться с кем-то этой программой то путь к звуковому файлу на другом компьютере будет другим и программа выдаст ошибку, как быть? Вот например картинка в Image компилируется и уже содержится в исполняемом exe файле а можно-ли также и звуковой файл скомпилировать так что-бы был только один исполняемый exe файл, который уже содержит звуковой файл? Или хотя-бы указать универсальный путь к звуковому файлу так чтобы исполняемый exe файл искал звуковой файл в той же папку где в конкретно взятый момент времени находится и сам исполняемый файл программы?

Большое спасибо за ответ!
Отправлен: 25.12.2007, 00:18
Вопрос задал: Петров Василий Геннадьевич (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Raptor3
Здравствуйте, Петров Василий Геннадьевич!

MediaPlayer.FileName:=ExtractFilePath(Application.Exename)+''имя звукового файла'';


---------
Программист - это человек который решает проблему, о которой вы не знаете, способом который вы не понимаете
Ответ отправил: Raptor3 (статус: 3-ий класс)
Ответ отправлен: 25.12.2007, 06:02
Оценка за ответ: 4

Отвечает: Ranmasao
Здравствуйте, Петров Василий Геннадьевич!

Если Вы укажете имя звукового файла без пути, то по идее программа должна его найти в той папке, из которой была запущена, но есть и другой вариант. Свойство Application.ExeName дает полный путь к файлу программы, включая его имя, с помощью ExtractFilePath можно получить из этой строки строку с одним только путем, а затем прибавить к ней имя нужного файла, тогда Вы можете быть уверены, что программа всегда будет искать файл в собственной папке.
Ответ отправил: Ranmasao (статус: 1-ый класс)
Ответ отправлен: 25.12.2007, 10:32

Отвечает: Зиновьев Дмитрий Владимирович
Здравствуйте, Петров Василий Геннадьевич!
Ну, путь к папке, где лежит к программе можно найти следующим образом
FilePath := ExtractFilePath(Applicarion.ExeName);
Следовательно, ваш файл будет
ExtractFilePath(Applicarion.ExeName) + 'имя звукового файла'
Ответ отправил: Зиновьев Дмитрий Владимирович (статус: 9-ый класс)
Ответ отправлен: 25.12.2007, 12:16

Отвечает: Genia007
Здравствуйте, Петров Василий Геннадьевич! Функция следующая: MediaPlayer.FileName:= ExtractFilePath(ParamStr(0))+'имя звукового файла';
Ответ отправил: Genia007 (статус: 2-ой класс)
Ответ отправлен: 26.12.2007, 10:36


Вопрос № 115.851
Здраствуйте.
Опять я к Вам =)
Продолжаю писать свою ацкую програмулину... и каждую неделю открывая че то новенькое, наталкиваюсь на не обьяснимые вещи=)
Вот как бы то, на что я наткнулся:
Моя программа через shellexecute запускает другую (которая обрабатывает текстовый файл), после сразу же через этот же shellexecute запускаю 3, что бы окончательно обработать нужный мне файл, но в зависимости от нагрузки ПК вторая программа не успевает полностью доделать обработку файла, как моя программка сразу же запускает 3, которая уже обращается к не доработаному файлу.
Как можно проследить выполнилось ли досовская программа в SW_hide`е или что бы автоматом следило за последовательностью выполнения и завершения программ.
т.е. моя программка запустила вторую, должалась её выполнения и запустила 3? 0_O
p.s. желательно в примере. Сразу же спасибо.
Отправлен: 25.12.2007, 11:02
Вопрос задал: Gavrila (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, Gavrila!

Если Вам нужно запустить внешнюю программу и дождаться, пока она отработает - то запускайте не через shellexecute, а createprocess - после выполнения функции у Вас будет processID, который Вы можете передать в качестве параметра функции WaitForSingleObject (или любой другой Wait-функции) - она после завершения работы внешней программы вернет значение и Ваша программа будет точно знать, что внешний процесс завершился. После этого сможете запускать следующую программу
Ответ отправил: Лукьяненко Алексей Валериевич (статус: 10-ый класс)
Ответ отправлен: 25.12.2007, 11:26
Оценка за ответ: 5
Комментарий оценки:
вот если бы сразу с примером, поставил бы 6 =)

Отвечает: Raptor3
Здравствуйте, Gavrila!

я бы проверил запущенные процессы на дос программу - во откапал в исходниках давнишнюю функцию

Приложение:

---------
Программист - это человек который решает проблему, о которой вы не знаете, способом который вы не понимаете

Ответ отправил: Raptor3 (статус: 3-ий класс)
Ответ отправлен: 25.12.2007, 11:36
Оценка за ответ: 4
Комментарий оценки:
спасибо за исходник, уже нашел применение, но не ктому.


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


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

В избранное