AVI állományok kezeléséhez az avifil32.dll-ben lévő interfészek, függvények fognak segíteni bennünket, mely már a Windows 95, illetve az NT 3.1 óta rendelkezésre állnak. Már csak arról kell gondoskodnunk, hogy Delphi-ből elérhessük ezeket. Ehhez hozzuk létre az Avi.pas-t, melyben adottak a szükséges deklarációk az interfészek és függvény eléréséhez.
Nézzük miként használhatjuk az avifil32.dll függvényeit arra, hogy meghatározzuk egy tetszőleges AVI tulajdonságait:
procedure TForm1.Button1Click(Sender: TObject);
var
af: PAVIFile;
afi: TAVIFileInfo;
begin
if OpenDialog1.Execute then begin
ListBox1.Items.Clear;
Az első teendőnk az inicializálás, melyet az AVIFileInit függvény végez, nekünk csak meg kell hívnunk. Ezt követően megnyithatjuk az adott AVI-t az AVIFileOpen függvénnyel. Ennél az első paraméterben egy mutatót kell átadnunk, melybe visszakapunk egy IAVIFile interfészre mutató pointert. A második paraméter lesz a megnyitandó AVI állomány, majd a harmadikban a megnyitás módját adhatjuk meg, melyek az alábbiak lehetnek:
- OF_CREATE
- OF_SHARE_DENY_NONE
- OF_SHARE_DENY_READ
- OF_SHARE_DENY_WRITE
- OF_SHARE_EXCLUSIVE
- OF_READ
- OF_READWRITE
- OF_WRITE
AVIFileInit;
if AVIFileOpen(af, PChar(OpenDialog1.FileName), OF_READ, nil)=AVIERR_OK then begin
A megnyitást követően a szükséges információkat az AVIFileInfo függvény kérdezi le. Ennek első paraméterként az imént kapott IAVIFile interfészt kell átadnunk, majd másodikként egy TAVIFileInfo struktúrát, melybe a lekérdezés eredményét kapjuk, végül e struktúra méretét kell átadni. A függvény lefutása után nincs más teendőnk, mint kiolvasni a struktúra számunkra érdekes adatait.
if AVIFileInfo(af, afi, SizeOf(TAVIFileInfo))=0 then begin
ListBox1.Items.Add('Frame Width: ' + IntToStr(afi.dwWidth));
...
end;
...
end;
end;