Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit interfaces und überladenen Funktionen (https://www.delphipraxis.net/108974-problem-mit-interfaces-und-ueberladenen-funktionen.html)

Meflin 22. Feb 2008 07:13


Problem mit interfaces und überladenen Funktionen
 
Moin moin,

ich würde gerne ein interface mit einer überladenen Funktion implementieren, das in etwa so aussieht:
Delphi-Quellcode:
IMyInterface = interface(IInvokable)
[GUID]
  function Add(const s: string): WORD; stdcall; overload;
  function Add(const s: TStrings): WORD; stdcall; overload;
end;
So weit so gut, hier meckert der Compiler noch nicht. Wenn ich jetzt jedoch versuche, eine TStringList von diesem Interface abzuleiten und die beiden Funktionen deklariere bekomme ich den Fehler, dass nach Methodendeklarationen keine Felddeklarationen mehr erlaubt seien. Nur: da kommt weit und breit kein Feld mehr in meiner Klassendeklaration :(

Ich habe im Moment mal garkeine Ahnung, wo es da hakt. Nehme ich eine der beiden Funktionen testweise raus, funktioniert alles einwandfrei. Nur mit der überladenen klappt es nicht.


Hawkeye219 22. Feb 2008 07:55

Re: Problem mit interfaces und überladenen Funktionen
 
Hallo Meflin,

hast du einmal versucht, die Direktiven overload und stdcall zu vertauschen?
Mit dem Methodennamen Add wäre ich an deiner Stelle vorsichtig, der wird nämlich bereits von TStrings verwendet.

Gruß Hawkeye

Meflin 22. Feb 2008 08:28

Re: Problem mit interfaces und überladenen Funktionen
 
Hallo Hawkeye,

Zitat:

Zitat von Hawkeye219
hast du einmal versucht, die Direktiven overload und stdcall zu vertauschen?

Ich glaube ja - ein override war dann in der Implementation auch noch dabei, und erlichgesagt hab ich garkeine Ahnung ob es da auf die Reihenfolge ankommt und, sollte dies der Fall sein, wie die Reihenfolge lauten müsste.

Zitat:

Mit dem Methodennamen Add wäre ich an deiner Stelle vorsichtig, der wird nämlich bereits von TStrings verwendet.
:gruebel: Aber die TStrings sind doch nur der Parameter. Aber gut, ich kann es ja mal Testweise umbenennen. Da ich ja wie gesagt keine Ahnung habe woher das Problem kommt kann ich das natürlich als Ursache auch nicht ausschließen :stupid:

Edit: 3333. Beitrag :party:


Meflin 27. Feb 2008 10:01

Re: Problem mit interfaces und überladenen Funktionen
 
Gut, wenn man in der Implementation overload und stdcall vertauscht, dann funktioniert es.

Wenn ich jetzt allerdings beispielswweise beim Ableiten von TStringList noch ein override benutzen möchte, bekomme ich wieder obige Fehlermeldung :( Habe schon via Trial- und Error nene haufen Reihenfolgen für die drei direktiven probiert, komme aber auf keinen grünen Zweig :stupid:



Alle Zeitangaben in WEZ +1. Es ist jetzt 05:17 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