Вопрос № 115820: Здравствуйте Уважаемые Специалисты!
Я самостоятельно учусь программировать с Дельфи 7
и вот какой у меня вопрос:
Я создал небольшую программу и во время исполнения программы проигрывается звуковой файл. Я использовал стандартный...Вопрос № 115851: Здраствуйте.
Опять я к Вам =)
Продолжаю писать свою ацкую програмулину... и каждую неделю открывая че то новенькое, наталкиваюсь на не обьяснимые вещи=)
Вот как бы то, на что я наткнулся:
Моя программа через shellexecute запускает дру...
Вопрос № 115.820
Здравствуйте Уважаемые Специалисты!
Я самостоятельно учусь программировать с Дельфи 7
и вот какой у меня вопрос:
Я создал небольшую программу и во время исполнения программы проигрывается звуковой файл. Я использовал стандартный Медиа плеер, указал Visible:=False; и выбрал путь к звуковому файлу а также указал запуск Медиа плеера:
И вот проблема: Если я хочу поделиться с кем-то этой программой то путь к звуковому файлу на другом компьютере будет другим и программа выдаст ошибку, как быть? Вот например картинка в Image компилируется и уже содержится в исполняемом exe файле а можно-ли также и звуковой файл скомпилировать так что-бы был только один исполняемый exe файл, который уже содержит звуковой файл? Или хотя-бы указать универсальный путь к звуковому файлу так чтобы исполняемый exe файл искал звуковой файл в той же папку где в конкретно
взятый момент времени находится и сам исполняемый файл программы?
--------- Программист - это человек который решает проблему, о которой вы не знаете, способом который вы не понимаете
Ответ отправил: 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) + 'имя звукового файла'
Отвечает: 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 Комментарий оценки: спасибо за исходник, уже нашел применение, но не ктому.