Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Reihenfolge im Interfaceteil erzeugt Inkompatible Typen Erro
JoelH - Fr 28.05.10 10:51
Titel: Reihenfolge im Interfaceteil erzeugt Inkompatible Typen Erro
Mal eine grundsätzliche Frage, da mir der Fehler nicht einleuchtet. Folgendes Szenario im Interfaceteil
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| private ... function IstesbrehebVretatou: boolean;OVERLOAD; function IstesbrehebVretatou(vretatoukoordinate:TKoord): boolean;OVERLOAD; ... public property IstbrehebVretatou:boolean read IstesbrehebVretatou; |
dieser Code funktioniert. Aber wenn ich folgendes versuche (zufällig drauf gestoßen)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| private ... function IstesbrehebVretatou(vretatoukoordinate:TKoord): boolean;OVERLOAD; function IstesbrehebVretatou: boolean;OVERLOAD; ... public property IstbrehebVretatou:boolean read IstesbrehebVretatou; |
erzählt mir der Compiler bei der Property, dass es einen "E2008 Inkompatible Typen" Fehler gibt.
Warum ist das so? Der Compliler sollte doch dank der OVERLOAD-Angabe erkennen, dass es da noch mehr gibt was zuordenbar sein könnte. Ansonsten macht der OVERLOAD-Angabenkram doch nur wenig Sinn wenn der Compiler es eh ignoriert. Oder ist es doch Absicht in irgendeiner Form die ich nicht erkenne?
BenBE - Fr 28.05.10 16:20
In Bezug auf die MEthoden-Tabelle ist der Compiler an vielen Stellen etwas "dumm". Bei der VMT hat man insbesondere mit überladenen Funktionen Probleme, was denk ich mal auch hier der Fall sein wird. Der Compiler greift einfach die erste Methode raus, die er findet und ... macht Mist ;-)
JoelH - Fr 28.05.10 17:59
BenBE hat folgendes geschrieben : |
| In Bezug auf die MEthoden-Tabelle ist der Compiler an vielen Stellen etwas "dumm". |
Man kann vielleicht sogar sagen evolutionär verdummt ;)
Hab das Proggi eben versucht mit D7 zu compilieren, da bekomm ich noch folgenden Fehler
| Zitat: |
[Fehler] Garrabo_class.pas(111):
Methoden zum Setzen und Lesen von Eigenschaften dürfen nicht überladen werden.
|
Das nehm ich sogar noch hin und sag, gut, benenn ichs um. Aber weiter oben das ist mit D2007 compiliert. Da hat also zwar einer was "gut" gemacht, dafür aber die Fehlernachricht verwässert und das ganze insgesamt unsauber umgesetzt :(
Naja aufgrund der Abwärtskompatibilität werd ich einfach die function umbenennen ;)
Martok - Fr 28.05.10 18:14
Ich würde mal vermuten, das liegt daran, dass Getter und Setter durchaus einen Parameter haben könnten: den Index oder Name, wenn man man mit diesen Direktiven arbeitet.
In D2k7 gibt es class operators, also kann TKoord durchaus auch passen-> es ist nicht mehr eindeutig, welche gemeint ist.
Da gibts aber bestimmt keine Testcase zu, denn die richtigere Fehlermeldung hat hier tatsächlich D7. Wie so oft :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!