interfejsy (_AddRef, _Release, QueryInterface)

0

witam,
zapoznalem sie z artykulem http://4programmers.net/Delphi/Interfejsy
i na jego podstawie udalo mi sie zastosowac interfejsy w swoim programie.

Tak jak autor napisal trzeb bylo zaimplementowac metody:

    function _AddRef: Integer; stdcall;
    function _Release: Integer; stdcall;
    function QueryInterface(const IID: TGUID; out Obj): HRESULT; stdcall;

zostawilem je puste bo nie mam pojecia co w nich ma byc.
niby wszystko dziala ale wydaje mi sie ze cos jednak powinno w nich byc.

czy ktos moglby mi powiedziec co robia te metody i co sie w nich powinno znajdowac?

0

Zerknij na klasę TInterfacedObject. Gdzieś mi się kiedyś obiło o uszy (może w vademecum do D4), że tam to jest za Ciebie zrobione, zresztą jak sprawdzisz w System.pas to się to potwierdza.
Innymi słowy zamiast za każdym razem implementować te metody jako klasę bazową stosuj TInterfacedObject.

0

pierwsze dwa sa odpowiedzialne za licznik ile jest kopii. W delphi (chyba jak zostalo napisane D4, na pewno nie w D3 gdzie mialy orginalna nazwe - bez _) sa wywolywane automatycznie i jak ich nie potrzebujesz (Albo w skrajnych przypadkach) to nie musisz ich implementowac. Podobnie QueryInterface (zwraca odpowiedni interfejs po podaniu GUID'a), w prostych interfejsach nie trzeba sie o to martfic a stosowac gotowe obiekty (tu jeszcze moze byc TComObject).

1 użytkowników online, w tym zalogowanych: 0, gości: 1