Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Originalfunktion in überladener Funktion nutzen? (https://www.delphipraxis.net/143242-originalfunktion-ueberladener-funktion-nutzen.html)

iphi 12. Nov 2009 11:06


Originalfunktion in überladener Funktion nutzen?
 
Kann ich eine Bibliotheksfunktion überladen und in der Definition die ursprüngliche Bibliotheksfunktion benutzen?

Also sowas:
Delphi-Quellcode:
function Trunc(x: TFloat): Int64; overload;
begin
if x<MAXINT then
  Result:=inherited Trunc(x) //also nicht rekursiv gemeint, inherited ist aber falsch
  else Result:=MAXINT;
end;

mkinzler 12. Nov 2009 11:08

Re: Originalfunktion in überladener Funktion nutzen?
 
Indem du Funktion mit dem ursprünglichen Parametertyp aufrufst.

Bernhard Geyer 12. Nov 2009 11:10

Re: Originalfunktion in überladener Funktion nutzen?
 
Oder Namespace (Unitnamen) angeben in der ursprüngliche FUnktion definiert ist:

Delphi-Quellcode:
:= System.Trunc(x)

mkinzler 12. Nov 2009 11:12

Re: Originalfunktion in überladener Funktion nutzen?
 
Wobei man Funktionen nicht überladen kann, sondern nur Methoden

iphi 12. Nov 2009 11:20

Re: Originalfunktion in überladener Funktion nutzen?
 
Trunc ist eine Funktion aus der Unit Math.
Weil es keine Methode ist geht Math.Trunc nicht.

Da die überladene Variante dieselben Argumente wie die Originalvariante wird der Aufruf automatisch rekursiv.

Das Überladen einer Funktion geht schon. Es wird tatsächlich mein Trunc statt das aus Math aufgerufen.

Komme ich in meiner Funktion nicht doch irgendwie an das Trunc aus Math ran?

sirius 12. Nov 2009 11:27

Re: Originalfunktion in überladener Funktion nutzen?
 
Zitat:

Zitat von iphi
Weil es keine Methode ist geht Math.Trunc nicht.

Hast du es propbiert? "Unitname.Funktionsname" geht.

Edit: Und Trunc ist nach wie vor in Unit System.

iphi 12. Nov 2009 11:33

Re: Originalfunktion in überladener Funktion nutzen?
 
Asche auf mein Haupt...
Stimmt, Trunc ist in System, hab ich verwechselt.

Und System.Trunc funktioniert. Super, danke :-)

uligerhardt 12. Nov 2009 13:15

Re: Originalfunktion in überladener Funktion nutzen?
 
Zitat:

Zitat von mkinzler
Wobei man Funktionen nicht überladen kann, sondern nur Methoden

Doch, mit overload. override geht natürlich nur für Methoden.

mkinzler 12. Nov 2009 13:19

Re: Originalfunktion in überladener Funktion nutzen?
 
Das ist aber kein Überladen, sondern nur eine Verschiebung des Scopes

uligerhardt 12. Nov 2009 15:25

Re: Originalfunktion in überladener Funktion nutzen?
 
Zitat:

Zitat von mkinzler
Das ist aber kein Überladen, sondern nur eine Verschiebung des Scopes

overload ist Überladen. Was der OP macht, ist aber (für mich) Verdecken und nicht Überladen, und Delphi verlangt dann auch kein overload. Meinst du das?


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