В моей программе создается новый AVI файл через функцию AVIFileOpen из Vfw. Примерно у 1% пользователей эта функция не работает и возвращает результат REGDB_E_CLASSNOTREG Подскажите пожалуйста где у меня ошибка, не могу понять что не так, ведь вызываю всего две базовые функции с минимумом параметров, дело даже не доходит до выбора кодека или аудио или запись фреймов. Вот кусок кода (Delphi):
procedure CreateFile(FN: String);
var
Result: DWORD;
AviFile: PAVIFileA;
begin
AviFile:=nil;
CoInitialize(nil);
AVIFileInit;
Result:=AVIFileOpen(AviFile, PChar(FN), OF_CREATE or OF_WRITE, nil);
if Result<>0 then begin
if Result=REGDB_E_CLASSNOTREG then Assert(False);
Exit;
end;
if AviFile<>nil then AviFileRelease(AviFile);
AVIFileExit;
end;
// Выдержка из хедера Vfw.pas:
PAVIFILEINFOA = ^TAVIFILEINFOA;
TAVIFILEINFOA = record
dwMaxBytesPerSec : DWORD; // max. transfer rate
dwFlags : DWORD; // the ever-present flags
dwCaps : DWORD;
dwStreams : DWORD;
dwSuggestedBufferSize : DWORD;
dwWidth : DWORD;
dwHeight : DWORD;
dwScale : DWORD;
dwRate : DWORD; // dwRate / dwScale == samples/second
dwLength : DWORD;
dwEditCount : DWORD;
szFileType : array[0..63] of AnsiChar;
end;
procedure AVIFileInit; stdcall; // Call this first!
procedure AVIFileInit; stdcall; external AVIFILDLL; // Call this first!
function AVIFileOpenA(var ppfile: PAVIFILE; szFile: LPCSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall;
function AVIFileOpen(var ppfile: PAVIFILE; szFile: LPCSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall; // AVIFileOpenA
function AVIFileOpenA(var ppfile: PAVIFILE; szFile: LPCSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall; external AVIFILDLL;
function AVIFileOpen(var ppfile: PAVIFILE; szFile: LPCSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall; external AVIFILDLL name 'AVIFileOpenA';