Autor Beitrag
JoelH
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 806
Erhaltene Danke: 17

Win10
Delphi Alexandria 11.2 Patch 1
BeitragVerfasst: Fr 28.05.10 10:51 
Mal eine grundsätzliche Frage, da mir der Fehler nicht einleuchtet. Folgendes Szenario im Interfaceteil

ausblenden 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)

ausblenden 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?

_________________
mfg. Joel
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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 ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
JoelH Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 806
Erhaltene Danke: 17

Win10
Delphi Alexandria 11.2 Patch 1
BeitragVerfasst: Fr 28.05.10 17:59 
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
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 ;)

_________________
mfg. Joel
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."