Hab mal wieder ein Problem mit generics. Und zwar findet er mir dieses Mal (ganz egal wie viele passende Funktionen deklariert sind) immer zu viele passende Funktionen mit demselben Namen und denselben Parametern (wobei die Parameter eigentlich nicht dieselben sind)
Die Fehlermeldung:
Zitat:
sharkutils.pas(109,4) Warning: Illegal compiler directive "$REGION" sharkutils.pas(111,4) Warning: Illegal compiler directive "$ENDREGION" sharkutils.pas(136,3) Error: Can't determine which overloaded function to call sharkutils.pas(8,14) Hint: Found declaration: operator -(TFraction$Int64):TFraction$Int64; sharkutils.pas(247,2) Warning: Illegal compiler directive "$REGION" sharkutils.pas(249,2) Warning: Illegal compiler directive "$ENDREGION" sharkutils.pas(253) Fatal: There were 1 errors compiling module, stopping
Also, er findet mir einen Operator "-" dessen Parameter absolut nichts mit den Parametern in Zeile 136 zu tun haben, und weiß deswegen nicht, welches - er verwenden soll.
Hier die Funktion:
Code:
class function TIntMath.abs(a: T): T;
begin
if a < 0 then result:= -a
else result:= a; //das hier ist Zeile 136, a ist definitiv immer irgendein Integer typ, und kein TFraction<Int64>
end;
Die Funktion hab ich übrigens bereits wegen einem solchen Fehler gebraucht, weil er mir vorher halt nicht gewusst hat, welches abs er aufrufen soll (obwohl ich keine eigenen abs funktionen deklariert hatte)
Im übrigen existieren auch keine impliziten Typumwandlungen, wobei das eigentlich auch kein Problem sein dürfte, wenn die Parameter exakt auf genau eine Funktion passen.
Wo liegt der Fehler, bzw wie kann man ihn beheben? Hier die ganze Unit:
Dateianhang:
sharkutils.pas
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Kompiliert bei mir ohne Fehler. (einfach fpc sharkutils.pas aufgerufen).
Code:
Free Pascal Compiler version 2.4.2 [2010/12/18] for x86_64
Copyright (c) 1993-2010 by Florian Klaempfl
Target OS: Linux for x86-64
Compiling sharkutils.pas
sharkutils.pas(96,20) Warning: An inherited method is hidden by "class TFracMath$TFraction$Int64$TIntMath$Int64$Int64.equals(const TFraction$Int64,const TFraction$Int64):Boolean;"
sharkutils.pas(105,20) Warning: An inherited method is hidden by "class TFracMath$TFraction$Int64$TIntMath$Int64$Int64.toString(const TFraction$Int64):AnsiString;"
301 lines compiled, 1.2 sec
2 warning(s) issued
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
ok, hab mir grad fpc 2.4.2 runtergeladen und installiert. Lazarus benutzt nachwievor 2.2.4. Über Commandline geht auch nix, weil fpc nicht gefunden wird. Wenn ich den Pfad komplett hinschreibe (was ein bisschen aufwändig ist), kommt zumindest keine Fehlermeldung, aber es kommt auch keine Meldung, dass es funktioniert hat (also keine Ahnung, ob´s kompiliert hat).
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Lazarus fixes + fpc 2.4.2 von hier. Deine Plattform kennst du selber am besten.
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++
Das ist schlecht, kann aber passieren. Dann musst du doch die andere Version verwenden. Generics werden halt noch weiter Entwickelt und du musst entweder auf die Features verzichten oder es irgendwie schaffen, Lazarus und 2.4.2 zu verheiraten. Bei mir (d.h. unter Linux) läuft es einwandfrei. Oh, stürzt der Debugger immer ab oder nur bei dem Beispiel? Ich habe auch die Erfahrung gemacht, dass der Debugger und Generics manchmal komisch zusammen reagieren.
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
Nein, der Debugger stürzt immer ab. Beim Starten von Lazarus gibts auch eine Warnung, dass nicht alles laufen wird, weil er einige "FPC Sources" nicht findet. Naja, mal sehen, ob die 32 bit versionen besser laufen
edit: ja, 32 bit version lauft einwandfrei (oder zumindest konnte ich bislang kein Problem feststellen. Also es kompiliert, und stürzt nicht ab)
Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste
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.