Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

В чем ошибка загрузки Waw-файла ? [D7, WinXP]


Страницы:   1 2

kyn66 ©   (2006-03-14 16:00:00) 

Загружаю вавик из Dll, ошибки нет, но и звука тоже. В чем может быть дело? ВОт функция загрузки:

procedure PlayWaveRes(const LibName, ResName: String);
var
 hLib: THandle;
begin
 hLib := LoadLibrary(PAnsiChar(LibName));
 if hLib <= 32 then
  exit;
 PlaySoundA(PAnsiChar(Resname), hLib, SND_RESOURCE or SND_SYNC);
 FreeLibrary(hLib);
end;


...
 PlayWaveRes('Sound.dll', 'S5');
...


Сергей М.   (2006-03-15 12:03:00) [21]

procedure PlayWaveRes(const LibName, ResName: String);
var
hLib: THandle;
begin
hLib := LoadLibrary(PChar(LibName));
Win32Check(hLib > 0);
try
  Win32Check(PlaySound(PChar(Resname), hLib, SND_RESOURCE or SND_SYNC));
finally
  FreeLibrary(hLib);
end;
end;


kyn66   (2006-03-15 11:47:00) [22]

Win32Check(PlaySound(...)); ???

Win32Check(PlaySoundA(Resname, hLib, SND_RESOURCE or SND_SYNC)); ?


Сергей М.   (2006-03-15 11:37:00) [23]


> что-же еще нужно?


Win32Check(PlaySound(...));


kyn66   (2006-03-15 11:21:00) [24]

А, понял. Ошибки были сразу при компиляции, если тип параметров был ShortString. Когда менял на Stringкомпиляция без ошибок. Но при выполнении звук не проигрывается. Но что-же еще нужно? И так делал [5]. Где-то читал, что нужно применять FindResurs? Может в этом дело? Неужели это непобедимая проблема? Ведь, если вавы вложить в прогу - все нормально вытягивается. И Dll-ка с ресурсами в PE-explorer загружается нормально, т.е. звуки из нее вытягивабтся.


Сергей М.   (2006-03-15 11:05:00) [25]


> kyn66 ©   (15.03.06 10:46) [7]


Причем здесь [4] ?

Цитрирую тебя:


> Загружаю вавик из Dll, ошибки нет


Вот и спрашиваю, что за ошибку ты ожидал увидеть ..


kyn66   (2006-03-15 10:46:00) [26]

> Сергей М
см. [4]


Сергей М.   (2006-03-15 10:01:00) [27]


> ошибки нет


А где собственно проверка на ошибку ?


kyn66   (2006-03-15 09:59:00) [28]

А если сделать так : ?

procedure PlayWaveRes(LibName, ResName: PChar);
var
 hLib: THandle;
begin
 hLib := LoadLibrary(Libname);
 if hLib <= 32 then
  exit;
 PlaySoundA(Resname, hLib, SND_RESOURCE or SND_SYNC);
 FreeLibrary(hLib);
end;

...
 PlayWaveRes(PChar('Sound.dll'), PChar('S5'));
...


Это не то-же самое? Хотя и так тоже звук не льется 8-(((((((


kyn66   (2006-03-15 09:55:00) [29]

>> LibName[Length(Libname)+1] := #0;

Тоже вылетает ошибка, недопустимое присваивание 8-(


deema   (2006-03-15 09:44:00) [30]


> вылетает ошибка Invalid typecast. Чтобы это значило?


LibName[Length(Libname)+1] := #0;
LoadLibrary( PAnsiChar( @Libname[1] ) );


kyn66   (2006-03-15 09:31:00) [31]

Изначально параметры были типа ShortString, но тогда в этом месте hLib := LoadLibrary(PAnsiChar(LibName));вылетает ошибка Invalid typecast . Чтобы это значило?


Призрак   (2006-03-14 20:18:00) [32]

Я не помню точно, но помню что что-то говорилось о том что при работе с DLL следует избегать string'ов в качестве параметров функции. Там какой-то геморрой с этим... Попробуй то же самое сделать через PChar?..


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо