unit uInterfaces;

interface

type
  IMyInterface1 = interface(IInterface)
    function GetName(const sStr : String) : String; stdcall;
  end;

  IMyInterface2 = interface
    function GetDate : String; stdcall;
  end;

  IMyInterface3 = interface(IMyInterface1)
    function GetSiganature : string; stdcall;
  end;

  IMyInterface4 = interface(IInterface)
  ['{AA884AA1-274B-4F63-B946-19D6AA354D66}']
    function GetGUID : String; stdcall;
  end;

  IDupInterface1 = interface
    function GetName : String;
  end;

  IDupInterface2 = interface
    function GetName : String;
  end;

  IGUIDIntf1 = interface(IInterface)
    ['{4A0B53A0-F33B-47A8-BD6F-9F00581E8B2A}']
    function GetGUID : String; stdcall;
  end;

  IGUIDIntf2 = interface(IInterface)
    ['{1A4FF9E1-76F2-4BAE-8E86-0D769631F267}']
    function GetGUID : String; stdcall;
  end;

  IGUIDIntf3 = interface(IInterface)
    ['{6394BFFC-FE48-4D1A-B306-2470F99110EC}']
    function GetGUID : String; stdcall;
  end;

{$M+}
  IImplInterface = interface(IInterface)
  ['{7B7840DC-97AD-48AD-80EE-ECFD78B511A0}']
    function ConvertToUSD(const iNTD : Integer) : Double; stdcall;
    function ConvertToRMB(const iNTD : Integer) : Double; stdcall;
    function GetUSDRate : Double; stdcall;
    function GetRMBRate : Double; stdcall;
    procedure SetUSDRate(const dRate : Double); stdcall;
    procedure SetRMBRate(const dRate : Double); stdcall;
    property USDRate : Double read GetUSDRate write SetUSDRate;
    property RMBRate : Double read GetRMBRate write SetRMBRate;
  end;
{$M-}

implementation

end.
