Nun möchte ich herausfinden ob was auch immer sich unter Class1 verbirgt ITest implementiert. getInterface, Supports haben mir nicht wirklich geholfen(bekomme immer false zurück) und direkt Class1 auf ITest zu casten geht auch nicht habs einfach testweise mal ausprobiert.
Somit wie kann ich Class1 auf ITest casten falls ITest auch implementiert ist???
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
GetInterface und Supports sind genau das richtige. Auch ein Cast mit dem As-Operator (wirft aber einer Exception, wenns nicht geht) oder eine Überprüfung mit dem is-Operator sollten den Dienst tun.
Sagst du FPC denn auch, dass du ITest implementierst?
Code:
type ITest = interface procedure Test; stdcall; end;
TClass2 = class (TInterfacedObject, ITest) procedure Test; stdcall; end;
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Mi Jan 31, 2007 18:32 Beiträge: 150
Programmiersprache: Pascal
Wenn ich getInterface, Supports benutze bekomme ich eben immer false und bei einem cast von Class1 auf das Interface gibts nen Syntax error, von wegen das class1 das Interface nicht implementiert was ja auch stimme den erst der nachkomme tut das. Ich hoffe jetzt ist klar wo das Problem liegt... Kann es sein das ich den Mode änder muss damit fpc das reibungslos verarbeitet was ich will??
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Ah… Kann es sein, dass deine Interfaces keine GUID haben? Eine GUID ist meines Wissens erforderlich, um GetInterface und Supports nutzen zu können:
Code:
type ITest = interface (IUnknown) ['{839980A6-CEF2-4FF4-B56B-8EA1C3C15CB8}'] // Blubb end;
Lazarus kann gültige GUIDs in den Code generieren mit Strg+Shift+G. Ansonsten einfach mal google benutzen.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Dann hilft nur noch mehr Code, fürchte ich.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.