Форум: "Media";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];
ВнизПомогите с ACM (Audio Compression Manager). Найти похожие ветки
← →
Blacked (2003-01-30 02:05) [0]Я пытаюсь получить информацию об Драйверах и постоянно возникает ошибка:
Access violation at address 00000010. Read of adress 00000010.
Испробывал уже всё что можно. Делал отладку, немогу найти проблему.
Использую MSACM.pas от JEDI http://www.delphi-jedi.org/.
Может кто сталкивался...
часть исходника:
//==============================================================================
function FormatEnumProc(hACMDrvId: HACMDRIVERID; ACMFmtDet: TACMFormatDetails;
dwInstance: DWord; fdwSupport: DWord): LONGBOOL; stdcall;
begin
...
...
Result:=True; // Продолжить поиск всёх форматов
ShowMessage("Сейчас вылитит птичка ERROR!!!");
end;
//==============================================================================
function DriverEnumProc(hACMDrvId: HACMDRIVERID;
dwInstance: DWORD; fdwSupport :DWORD): BOOL; stdcall;
var
ACMDrvDet: TACMDriverDetails;
ACMFmtDet: TACMFormatDetails;
WaveFormatEx: TWaveFormatEx;
MaxSize : Word;
hACMDrv : HACMDriver;
begin
if fdwSupport=ACMDRIVERDETAILS_SUPPORTF_CODEC then
begin
ACMDrvDet.cbStruct:=SizeOf(ACMDrvDet);
if acmDriverDetails(hACMDrvId, ACMDrvDet, 0) = 0 then
if HiWord(ACMDrvDet.vdwACM)<=HiWord(acmGetVersion) then
if ACMDrvDet.fdwSupport and ACMDRIVERDETAILS_SUPPORTF_CODEC > 0 then
begin
// Заполним бокс драйвера
SelectFormatForm1.DriverBx1.Items.Add(ACMDrvDet.szShortName);
// Инициализируем структуры
FillChar(WaveFormatEx,SizeOf(WaveFormatEx),#0);
FillChar(ACMFmtDet,SizeOf(TACMFormatDetails),#0);
hACMDrv:=nil;
if acmDriverOpen(hACMDrv,hACMDrvId,0) <> 0 then Result:=False;
// Получим максимальный размер формата
MaxSize:=0;
if acmMetrics(HACMOBJ(hACMDrv),ACM_METRIC_MAX_SIZE_FORMAT,MaxSize) <> 0 then Result:=False;
if MaxSize<SizeOf(WaveFormatEx) then MaxSize:=SizeOf(WaveFormatEx);
WaveFormatEx.cbSize:=LoWord(MaxSize)-SizeOf(WaveFormatEx);
WaveFormatEx.wFormatTag:=0;
// Устанавливаем формат для получения параметров
ACMFmtDet.cbStruct:=SizeOf(ACMFmtDet);
ACMFmtDet.pwfx:=@WaveFormatEx;
ACMFmtDet.cbwfx:=MaxSize;
ACMFmtDet.dwFormatTag:=0;
// Пытаемся получить всё форматы
if acmFormatEnum(hACMDrv,ACMFmtDet,@FormatEnumProc,Integer(SelectFormatForm1),0) <> 0 then Result:=False;
acmDriverClose(hACMDrv,0);
end;
end;
Result:=True; // Продолжить поиск всёх драйверов
end;
//==============================================================================
procedure TSelectFormatForm1.InitSelFormat;
begin
// ТУТ НАЧАЛО ВСЕГО
acmDriverEnum(@DriverEnumProc,Integer(Self),ACM_DRIVERENUMF_DISABLED);
end;
//==============================================================================
← →
Владимир Васильев (2003-01-30 10:20) [1]Проверяй почту.
← →
savva (2003-01-30 12:19) [2]> Владимир Васильев © (30.01.03 10:20)
> Проверяй почту.
ну так не интересно.. может в кладовку?:)))
← →
Владимир Васильев (2003-01-30 14:38) [3]Это не мои компоненты и в данный момент их новая версия распространяется автором как Shareware , - но опубликованы они в своё время были под Mozilla Public License - так что проверяй почту :).
← →
savva (2003-01-30 14:47) [4]>Владимир Васильев © (30.01.03 14:38)
>так что проверяй почту :).
спасибо:)))
← →
Blacked (2003-01-30 17:22) [5]Нет народ, так не пойдёт. Мне не нужны компоненты, мне надо имено на API. Может кто уже писал подобную прогу и скинит часть исходника.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c