AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Method Resolution Clause --> Undeclared Identifier
Thema durchsuchen
Ansicht
Themen-Optionen

Method Resolution Clause --> Undeclared Identifier

Ein Thema von Aviator · begonnen am 16. Jan 2017 · letzter Beitrag vom 16. Jan 2017
Antwort Antwort
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Method Resolution Clause --> Undeclared Identifier

  Alt 16. Jan 2017, 16:52
Hmm merkwürdig. Meine Interfaces sind zwar etwas größer und es gibt auch mehrere gleichnamige Funktionen darin, aber ich habe auch schonmal aus dem einem Interface (das bei dem er erstmalig angefangen zu meckern) alle gleichnamigen Methoden entfernt. Trotzdem das gleiche Problem.

EDIT: Du hast aber hinter I2Init und I3Init auch noch stdcall stehen. Das funktioniert bei mir nicht.

Geändert von Aviator (16. Jan 2017 um 16:54 Uhr)
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Method Resolution Clause --> Undeclared Identifier

  Alt 16. Jan 2017, 16:54
Dein Code hat hier auch nicht funktioniert. Erst nachdem ich den Stdcall and die Einzelnen funktionen gehängt habe.
Ich denke die Fehlermeldungen vom Compiler sind hier "Suboptimal".
In Wirklichkeit passt nämlich die Signatur nicht
Fritz Westermann
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Method Resolution Clause --> Undeclared Identifier

  Alt 16. Jan 2017, 16:55
Wieso geht stdcall nicht was meckert wer da?
Fritz Westermann
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Method Resolution Clause --> Undeclared Identifier

  Alt 16. Jan 2017, 17:07
Wieso geht stdcall nicht was meckert wer da?
Kommando zurück mit dem stdcall . Da hat bei mir bei der Interface Deklaration noch etwas gefehlt. Aber der andere Fehler bleibt leider weiterhin.
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Method Resolution Clause --> Undeclared Identifier

  Alt 16. Jan 2017, 17:10
Ich denke da musst Du noch mal alles genau anschauen. Das hier funktioniert einwandfrei,
nehme ich aber ein stdcall weg zb bei I2Init bekomme ich Deinen beschrieben Fehler

Delphi-Quellcode:
unit Unit24;

interface

type

  IInterface1 = interface
    function Init: Boolean; stdcall;
  end;

  IInterface2 = interface
    function Init: Boolean; stdcall;
  end;

  IInterface3 = interface
    function Init: Boolean; stdcall;
  end;

  TTestClass = class(TInterfacedObject, IInterface1, IInterface2, IInterface3)
  private
    function I2Init: Boolean; stdcall;
    function I3Init: Boolean; stdcall;

  public
    function Init: Boolean; stdcall; // Init aus IInterface1
    function IInterface2.Init = I2Init;
    function IInterface3.Init = I3Init;
  end;

implementation

{ TTestClass }

function TTestClass.I2Init: Boolean;
begin
  result := false;
end;

function TTestClass.I3Init: Boolean;
begin
  result := false;
end;

function TTestClass.Init: Boolean;
begin
  result := false;
end;

end.
Fritz Westermann
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Method Resolution Clause --> Undeclared Identifier

  Alt 16. Jan 2017, 17:24
Hallo FritzeW,

hab nochmal über alles drübergschaut und schlussendlich auch den Fehler gefunden.

Der Fehler kam daher, dass ich bei einem anderen Interface in dem ich schon Method Resolution Clauses verwenden musste das stdcall vergessen habe und daher dachte, dass das nicht funktioniert. Deshalb habe ich das auch bei den neuen Methoden weggelassen und dadurch auch den Fehler an der falschen Stelle gesucht.

Dumme Fehler müssen bestraft werden.

Danke das du meine Kugel mit deinem ersten Beitrag schon ins Rollen gebracht hast. Deinen letzten Beitrag habe ich übrigens erst gesehen, als ich meine Lösung posten wollte.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Method Resolution Clause --> Undeclared Identifier

  Alt 16. Jan 2017, 17:30
Ach noch eins. Wenn wir schon bei dem Thema sind.

Ist es sinnvoll, alle Methoden auf die gleiche Methode umzubiegen wenn alle das gleiche ausführen sollen? Also in etwa so?

Delphi-Quellcode:
unit Unit24;

interface

type

  IInterface1 = interface
    function Init: Boolean; stdcall;
  end;

  IInterface2 = interface
    function Init: Boolean; stdcall;
  end;

  IInterface3 = interface
    function Init: Boolean; stdcall;
  end;

  TTestClass = class(TInterfacedObject, IInterface1, IInterface2, IInterface3)
  private
    function DoInit: Boolean; stdcall;
  public
    function IInterface1.Init = DoInit;
    function IInterface2.Init = DoInit;
    function IInterface3.Init = DoInit;
  end;
Theoretisch könnte man dann auch ein Basis-Interface machen, aber in dem Fall habe ich das nicht. Könnte ich theoretisch mal noch umbauen. Aber nur so aus Prinzip. Gibt es hier irgendwelche Nachteile? Kompilieren tut es nämlich.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:37 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