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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2009, 15:01   #1
Simon..14
Пользователь
 
Регистрация: 11.01.2009
Сообщений: 44
По умолчанию MediaPlayer воспроизведение

подскажите пожалуйста как сделать чтоб при переносе на другой компютер программы звуки находяшиеся в папке с программмой возпроизводились ато пишет ненайден файл.Зарание спасибо
Simon..14 вне форума Ответить с цитированием
Старый 18.03.2009, 15:06   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Использовать при программирование не прямые пути, а относительные.
Допустим ваш исполняемый файл находится в папке "C:\Source\Bin", а звуковые файлы в папке "C:\Source\Sound". Тогда при указании пути (во время программирования) нужно указать "..\Sound"
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 18.03.2009, 15:27   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Лучше через GetModuleFileName получить путь к вашей программе и от него уже "плясать". Если просто использовать относительные пути, то будет фигня, например, после работы со стандартными диалогом открытия/сохранения файлов, т.к. они меняют текущую папку.
pu4koff на форуме Ответить с цитированием
Старый 18.03.2009, 16:46   #4
Simon..14
Пользователь
 
Регистрация: 11.01.2009
Сообщений: 44
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Лучше через GetModuleFileName получить путь к вашей программе и от него уже "плясать". Если просто использовать относительные пути, то будет фигня, например, после работы со стандартными диалогом открытия/сохранения файлов, т.к. они меняют текущую папку.
подрбней можно не пойму
Simon..14 вне форума Ответить с цитированием
Старый 18.03.2009, 17:21   #5
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Цитата:
Сообщение от Simon..14 Посмотреть сообщение
подрбней можно не пойму
Ну сейчас у вас вероятно что-то вроде:
проиграть_звук("C:\My program\Sounds\sound.mp3");
нужно:
проиграть_звук(ExePath + "\Sounds\sound.mp3");
где ExePath - путь к Вашей программе, который определяете любым, удобным для Вас, методом.
pu4koff на форуме Ответить с цитированием
Старый 18.03.2009, 18:04   #6
Simon..14
Пользователь
 
Регистрация: 11.01.2009
Сообщений: 44
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
где ExePath - путь к Вашей программе, который определяете любым, удобным для Вас, методом.
ну смотрите если я перенесу програму на другой компютер как мне узнать место разположение там
Simon..14 вне форума Ответить с цитированием
Старый 18.03.2009, 18:46   #7
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Я Вам уже сказал про WinAPI функцию GetModuleFileName. С помощью неё получите имя exe-файла Вашего. Из него можно получить папку, в которой лежит программа.
Если C++ Builder используете, то там должны быть:
Application->ExeName, ParamStr(0), ExtractFilePath
pu4koff на форуме Ответить с цитированием
Старый 19.03.2009, 15:10   #8
Simon..14
Пользователь
 
Регистрация: 11.01.2009
Сообщений: 44
По умолчанию

а можно пример буду бдагодарен
Simon..14 вне форума Ответить с цитированием
Старый 19.03.2009, 15:56   #9
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Ну как-то вот так:
Код:
// Это типа воспроизведение музыкального файла filename
void Play(const TCHAR *filename)
{
	cout << "Play: " << filename << endl;
}

int main()   
{    
	TCHAR ExeName[MAX_PATH];
	GetModuleFileName(NULL, ExeName, MAX_PATH); // Определяем полный путь к нашей программе
	int i = strlen(ExeName)-1;
	while (ExeName[i] != '\\') // Отрезаем имя файла, чтобы остался только путь
	{
		--i;
	}
	ExeName[i] = '\0';
	// Вот наша папка, в которой лежит программа
	cout << TEXT("Program directory: ") << ExeName << endl;
	// "Собираем" путь к музыкальному файлу
	TCHAR SoundFile[MAX_PATH];
	strcpy_s(SoundFile, MAX_PATH, ExeName);  // Берем путь к программе
	strcat_s(SoundFile, MAX_PATH, TEXT("\\Sounds\\my_sound.mp3")); // Добавляем путь до музыкального файла

	Play(SoundFile); // Проигрываем файл

	getchar();
	return 0;   
}
pu4koff на форуме Ответить с цитированием
Старый 19.03.2009, 17:19   #10
Simon..14
Пользователь
 
Регистрация: 11.01.2009
Сообщений: 44
По умолчанию

Можете на билдере показать как можно обрезать
вот путь к папке с екзешником но как мне вернуться на одну папку назад
ExtractFilePath(Application->ExeName)
Simon..14 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Воспроизведение SLIMMUS Общие вопросы Delphi 1 13.09.2008 15:45
Воспроизведение звука Патрон Общие вопросы Delphi 21 15.07.2008 20:08
Воспроизведение видеофайла Airou Мультимедиа в Delphi 5 16.05.2008 11:28
Закончилось ли воспроизведение? bagish Мультимедиа в Delphi 3 12.02.2008 16:21
MediaPlayer - как сделать последовательное воспроизведение mp3 файлов (именно mp3) Kashp Компоненты Delphi 13 28.09.2007 08:38