interfejsy (_AddRef, _Release, QueryInterface)

interfejsy (_AddRef, _Release, QueryInterface)
Johny_Morfina
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 5 lat
  • Postów:448
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:

Kopiuj
    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?


b0bik
  • Rejestracja:około 22 lata
  • Ostatnio:około 2 miesiące
  • Postów:1112
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.

reichel
  • Rejestracja:ponad 20 lat
  • Ostatnio:około 14 lat
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).


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.