![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
В чем ошибка загрузки Waw-файла ? [D7, WinXP]
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?..