<div dir="ltr"><div>The code below should work but I get an AV when the program calls `Bar.Free`.</div><div><br></div><div>Do you know why?</div><div><br></div><div>Lazarus 1.8.1 r57299 FPC 3.0.4 i386-win32-win32/win64<br></div><div><br></div><div>===begin===</div><div><div>program Project1;</div><div><br></div><div>uses</div><div>  SysUtils;</div><div><br></div><div>type</div><div>  IBar = interface</div><div>  ['{C22FB8F4-1EC6-42C4-81E4-F2A52CC52258}']</div><div>    function Name: string;</div><div>  end;</div><div><br></div><div>  TBar = class(TInterfacedObject, IBar)</div><div>  public</div><div>    function Name: string;</div><div>  end;</div><div><br></div><div>{ TBar }</div><div><br></div><div>function TBar.Name: string;</div><div>begin</div><div>  Result := ClassName;</div><div>end;</div><div><br></div><div>var</div><div>  Bar: TBar;</div><div><br></div><div>begin</div><div>  Bar := TBar.Create;</div><div>  try</div><div>    if Supports(Bar, IBar) then</div><div>      Writeln('Bar supports...');</div><div>  finally</div><div>    Bar.Free;</div><div>  end;</div><div><br></div><div>end.</div></div><div>===end===</div><div><br></div><div>Regards,</div><div>Marcos Douglas</div></div>