Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Project2;
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- type
- IService1 = interface
- ['{7B5DAF28-5B13-4760-A3B3-29D73C1C0C7C}']
- end;
- IService2 = interface
- ['{D1623AFA-FAC2-4DF5-9E1D-48A1BF9B2D42}']
- end;
- TSlave = class
- public
- procedure UseService(const Service1: IService1); overload;
- procedure UseService(const Service2: IService2); overload;
- end;
- TService1 = class(TInterfacedObject, IService1);
- TService2 = class(TInterfacedObject, IService2);
- procedure TSlave.UseService(const Service1: IService1);
- begin
- end;
- procedure TSlave.UseService(const Service2: IService2);
- var
- ServiceTemp: IService2;
- begin
- ServiceTemp := Service2;
- end;
- procedure TestSlave;
- var
- Slave: TSlave;
- begin
- Slave := TSlave.Create;
- try
- Slave.UseService(TService1.Create); // leaked
- Slave.UseService(TService2.Create); // not leaked
- finally
- Slave.Free;
- end;
- end;
- begin
- try
- ReportMemoryLeaksOnShutdown := True;
- TestSlave;
- Readln;
- except
- on E: Exception do
- Writeln(E.ClassName, ': ', E.Message);
- end;
- end.
- begin
- try
- { TODO -oUser -cConsole Main : Insert code here }
- except
- on E: Exception do
- Writeln(E.ClassName, ': ', E.Message);
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement