Спасибо, я видел похожие примеры, все они, после адаптации, валятся вот на этом месте:
- Код: Выделить всё
function AVIFileOpen; external 'avifil32.dll' name 'AVIFileOpenA';
function AVIFileCreateStream; external 'avifil32.dll' name 'AVIFileCreateStreamA';
function AVIStreamSetFormat; external 'avifil32.dll' name 'AVIStreamSetFormat';
function AVIStreamReadFormat; external 'avifil32.dll' name 'AVIStreamReadFormat';
function AVIStreamWrite; external 'avifil32.dll' name 'AVIStreamWrite';
function AVIStreamRelease; external 'avifil32.dll' name 'AVIStreamRelease';
function AVIFileRelease; external 'avifil32.dll' name 'AVIFileRelease';
function AVIFileGetStream; external 'avifil32.dll' name 'AVIFileGetStream';
function CreateEditableStream; external 'avifil32.dll' name 'CreateEditableStream';
И я не понимаю чего Lazarus от меня хочет? Вот его сообщение об ошибке:
- Код: Выделить всё
AviWriter.pas(728,23) Fatal: Syntax error, ":" expected but ";" found
Лазарус ругается на, то, что функции изначально объявлены вот так:
- Код: Выделить всё
function AVIFileOpen(var ppfile: PAVIFile; szFile: PChar; uMode: UINT; lpHandler: pointer): HResult; stdcall;
function AVIFileCreateStream(pfile: PAVIFile; var ppavi: PAVISTREAM; var psi: TAVIStreamInfo): HResult; stdcall;
function AVIStreamSetFormat(pavi: PAVIStream; lPos: LONG; lpFormat: pointer; cbFormat: LONG): HResult; stdcall;
function AVIStreamReadFormat(pavi: PAVIStream; lPos: LONG; lpFormat: pointer; var cbFormat: LONG): HResult; stdcall;
function AVIStreamWrite(pavi: PAVIStream; lStart, lSamples: LONG; lpBuffer: pointer; cbBuffer: LONG; dwFlags: DWORD; var plSampWritten: LONG; var plBytesWritten: LONG): HResult; stdcall;
function AVIStreamRelease(pavi: PAVISTREAM): ULONG; stdcall;
function AVIFileRelease(pfile: PAVIFile): ULONG; stdcall;
function AVIFileGetStream(pfile: PAVIFile; var ppavi: PAVISTREAM; fccType: DWORD; lParam: LONG): HResult; stdcall;
function CreateEditableStream(var ppsEditable: PAVISTREAM; psSource: PAVISTREAM): HResult; stdcall;
function AVISaveV(szFile: PChar; pclsidHandler: PCLSID; lpfnCallback: TAVISaveCallback;
nStreams: integer; pavi: APAVISTREAM; lpOptions: APAVICompressOptions): HResult; stdcall;
А при обращении к DLL их объявили иначе.
И Лазарусу приспичило, что нужно добавить "
: HResult".
Но добавление "
: HResult", вначале убирает эти, но в итоге вызывает новые ошибки.
Постольку поскольку я с DLL не работаю, я не понимаю чего Лазарус от меня хочет?
С другой стороны, я нашёл какой-то код, который при обращении к avifil32.dll - не ругается. И более того, даже создаёт AVI файл!
Но файл получается без картинок. Пустой АВИ. Поэтому я и попросил рабочий пример, ПОЖАЛУЙСТА, если у кого есть?
DirectX не пробовал, там нужно лезть DirectShow и ещё куча настроек, без примера ОЧЕНЬ сложно.
.