![]() |
E2291 Implementierung der Interface-Methode ... fehlt
Hi,
ich habe jetzt Delphi 12 und davor aber Berlin gehabt. Eine Komponente, die auch für 10.4 gemacht ist (neuere hab ich nicht, daher nehme ich diese Version; die Berlin-Version ließ sich fehlerfrei compilieren) erzählt mir jetzt beim Compilieren: Zitat:
Delphi-Quellcode:
und weiter unten in der Unit
type
TTextRendering = class(TInterfacedPersistent, IDWriteTextRenderer) // <- diese Zeile wird bemeckert, das "class" unterwellt private // unter anderen: function DrawInlineObject(clientDrawingContext: Pointer; originX: Single; originY: Single; var inlineObject: IDWriteInlineObject; isSideways: BOOL; isRightToLeft: BOOL; const clientDrawingEffect: IUnknown): HResult; stdcall;
Delphi-Quellcode:
:gruebel: Hä? Ist doch da?!
function TTextRendering.DrawInlineObject(clientDrawingContext: Pointer;
originX: Single; originY: Single; var inlineObject: IDWriteInlineObject; isSideways: BOOL; isRightToLeft: BOOL; const clientDrawingEffect: IUnknown): HResult; begin Result := S_OK; end; Und das IDWriteTextRenderer ist in Winapi.D2D1 zu finden, Zeile 5830:
Delphi-Quellcode:
Was braucht der Compiler denn jetzt?
IDWriteTextRenderer = interface(IDWritePixelSnapping)
// unter anderem function DrawInlineObject(clientDrawingContext: Pointer; originX: Single; originY: Single; const inlineObject: IDWriteInlineObject; isSideways: BOOL; isRightToLeft: BOOL; const clientDrawingEffect: IUnknown): HResult; stdcall; Wie behebe ich das? |
AW: E2291 Implementierung der Interface-Methode ... fehlt
In Deiner „alten“ Methode ist InlineObject als Var deklariert, im neuen Delphi aber als Const. Daher wird die Methode nicht mehr als zum Interface gehörig erkannt.
|
AW: E2291 Implementierung der Interface-Methode ... fehlt
Aha. Und wie ändere ich das?
|
AW: E2291 Implementierung der Interface-Methode ... fehlt
Indem Du in "Deinem" Source den Var- in einen Const-Parameter änderst.
Delphi-Quellcode:
function DrawInlineObject(clientDrawingContext: Pointer; originX: Single;
originY: Single; {alt: var}const inlineObject: IDWriteInlineObject; isSideways: BOOL; isRightToLeft: BOOL; const clientDrawingEffect: IUnknown): HResult; stdcall; |
AW: E2291 Implementierung der Interface-Methode ... fehlt
Ah :thumb:
Beeindruckend, sofort war der Fehler weg. Dankeschön, wieder was gelernt :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz