X1008 Integer et HRESULT échangés (Delphi)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Messages d'erreur et d'avertissement (Delphi)


Dans Delphi, Integer, Longint et HRESULT sont des types compatibles, mais ils ne sont pas compatibles en C++ et ils produisent des noms de paramètres substantypés différemment. Pour ne pas rencontrer de problème lors de la liaison de fichiers objet créés avec le compilateur Delphi, ce message vous indique de faire attention. Si vous compilez votre code source dans un fichier objet, c'est un message d'erreur. Sinon, c'est un avertissement.

Cet exemple déclare les méthodes de classe et d'interface différemment. Elles sont équivalentes en Delphi, mais pas en C++.

program Produce;
  uses Windows;

  type
    I0 = interface (IUnknown)
      procedure p0(var x : Integer);
    end;

    C0 = class (TInterfacedObject, I0)
      procedure p0(var x : HRESULT);
    end;

  procedure C0.p0(var x : HRESULT);
  begin
  end;

begin
end.

La solution la plus facile est de rendre les méthodes de classe identiques aux méthodes d'interface.

program Solve;

  uses Windows;

  type
    I0 = interface (IUnknown)
      procedure p0(var x : Integer);
    end;

    C0 = class (TInterfacedObject, I0)
      procedure p0(var x : Integer);
    end;

  procedure C0.p0(var x : Integer);
  begin
  end;

begin
end.