Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Interface Klasse findet Implementierung nicht (https://www.delphipraxis.net/197026-interface-klasse-findet-implementierung-nicht.html)

bernhard_LA 12. Jul 2018 08:47


Interface Klasse findet Implementierung nicht
 
mein code sieht wie folgt aus :


die Unit mit der Interface definition.
Delphi-Quellcode:
type
  IImageLibrary = Interface
  ['{B6500357-C309-4E88-99E8-70BDFD33448D}']

      procedure ColorImage(
        Bit    : TBitMap;
        R, G, B : integer );

      procedure ColorInvImage(
        Bit    : TBitMap;
        R, G, B : Boolean );

      ......


die unit mit der Implementierung des Interfaces
Delphi-Quellcode:
  TImageLibraryClassFMX = class( TInterfacedObject, IImageLibrary )

    private
      ......

    public

      constructor create;
      destructor destroy; override;

      procedure ColorImage(
        Bit    : TBitMap;
        R, G, B : integer );

     .....
    end;

procedure TImageLibraryClassFMX.ColorImage(Bit: TBitMap; R, G, B: integer);
begin
     ......
end;


trotzdem bekomme ich beim Übersetzen folgende fehlermeldung

Delphi-Quellcode:
[dcc32 Error] ImageUnit.FMX.pas(32): E2291 Missing implementation of interface method IImageLibrary.ColorImage
Warum findet der compiler die vorhandene Implementierung der Funktion ColorImage von meiner Klasse nicht ? (

jaenicke 12. Jul 2018 09:04

AW: Interface Klasse findet Implementierung nicht
 
Villeicht der klassische Fehler, dass TBitmap aus der falschen Unit gezogen wird? (siehst du ja im Mouseover schon) Die Unitreihenfolge muss stimmen. Wenn dort die Unit Windows drin ist, muss die vor Graphics stehen, da dort auch ein tBitmap deklariert ist.

Nebenbei, hat damit nix zu tun, aber:
Create und Destroy sollten schon richtig geschrieben werden, nicht mit kleinem Anfangsbuchstaben.

Stevie 12. Jul 2018 09:05

AW: Interface Klasse findet Implementierung nicht
 
Ich tip mal auf
Delphi-Quellcode:
TBitMap
als Schuldigen. Den Typ gibt es sowohl in
Delphi-Quellcode:
Winapi.Windows
, als auch in
Delphi-Quellcode:
Vcl.Graphics
und
Delphi-Quellcode:
Fmx.Graphics
. Ich tippe, das er in der Interface Unit aus einer anderen Unit kommt als in der Implementierung

Rollo62 12. Jul 2018 09:32

AW: Interface Klasse findet Implementierung nicht
 
Hallo Stefan,

würde das reichen in einem Interface die Unit exakt zu spezifizieren ?
Delphi-Quellcode:
  Bit : FMX.Graphics.TBitMap;
Rollo

Schokohase 12. Jul 2018 09:40

AW: Interface Klasse findet Implementierung nicht
 
Es würde reichen, wenn man die Interface-Methoden per Code-Completion in die Klasse bringt, denn dann werden alle Typen voll qualifiziert erzeugt.

bernhard_LA 12. Jul 2018 10:28

AW: Interface Klasse findet Implementierung nicht
 
Euer Verdacht war Richtig !!! Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz