Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Überladen, Overload (https://www.delphipraxis.net/7460-ueberladen-overload.html)

Baumel 12. Aug 2003 21:52


Überladen, Overload
 
Hallo,
ab welcher Delphi-Version kann man Methoden, Funktionen, ... überladen?
Ich war bis ebend der meinung, daß man das schon seit BP7 konnte.
Aber das scheibnt doch nicht so zu sein, da ich momentan mit Delphi 3 Prof herumprogrammiere und dort kann man nix überladen. Zum Stichwort overload findet man in der Hilfe nichts entsprechendes

Mach ich was falsch? Ab welcher Delphi-Version kann man überladen?

Gruß
Dirk

negaH 12. Aug 2003 22:25

Re: Überladen, Overload
 
ab D5 funktionierts.

Baumel 12. Aug 2003 22:33

Re: Überladen, Overload
 
Danke für die schnelle Antwort.

Dann muss ich mir demnächst ne neuere Delphi-Version beschaffen.

Schönen Abend noch
Dirk

imp 12. Aug 2003 22:35

Re: Überladen, Overload
 
Ab welcher Version kann ich dir nicht sagen. Ich denke mal es geht schon seit es die Objektorientierung gibt, denn ansonsten würde sie ja nicht halb soviel sinn machen. Allerdings hat man - wenn ich mich recht entsinne - früher nicht override verwendet sondern einfach nur virtual.

teebee 12. Aug 2003 22:41

Re: Überladen, Overload
 
Überladen geht erst ab Delphi 4....

Hoppla, kaum ist man mal 'ne Viertelstunde weg, schon sind einem ein paar Leute zuvor gekommen...

Übrigens overload hat nix mit override zu tun. Mal nen Blick in die Hilfe riskieren..

Ciao, teebee

negaH 13. Aug 2003 03:21

Re: Überladen, Overload
 
Ok, überladen geht ab Delphi 4 und funktioniert so richtig ab Delphi 5. In D4 gab es immer wieder Deklarationen die zwar gültige Sprachkonstrukte sind aber nicht vom Compiler aufgelösst werden konnten. Ebenfalls ein enormes Problem mit D4 overloads sind die Default Parameter. Unter bestimmten Umständen generierte der Compiler "selbstzerstörischen" Code.

Gruß hagen

[Flox]Cauchy 14. Aug 2003 15:27

Re: Überladen, Overload
 
Seit welcher Version das Überladen von Prozeduren/Funktionen unter Delphi unterstützt wird, weiß ich nicht, aber wenn in der Hilfe dazu nichts zu finden ist, dann gibt es das in der entsprechenden Version noch nicht. Turbo Pascal 7.0 kannte auf jeden Fall noch kein "overload".

Ich wollte nur mal anmerken, daß das Überladen von Prozeduren/Funktionen zunächst nichts mit Objekten/Klassen zu tun hat, wie das folgende Beispiel zeigt:
Delphi-Quellcode:
function Maximum(a, b: Integer): Integer; overload;
  begin
    if a > b then
      Result := a
    else
      Result := b;
  end;

function Maximum(a, b: Single): Single; overload;
  begin
    if a > b then
      Result := a
    else
      Result := b;
  end;
Man vergleiche auch die interne Definition von "IntToStr". Überladen von Prozeduren/Funktionen bedeutet, daß es zu einem Bezeichner mehrere Implementationen gibt, die sich in der Parameterliste unterscheiden. Die beiden Aufrufe
Delphi-Quellcode:
Maximum(3, 8);
Maximum(3.2, 8.5);
aktivieren jeweils die passende Implementation, die aber schon durch den Compiler festgelegt wird.

Die Tatsache, daß man bei Objekten/Klassen dynamische Methoden mit "dynamic", "virtual" und "override" erstellen kann, bedeutet ja, daß diese Methoden dynamisch gebunden werden. Das heißt, daß erst während des Programmablaufs entschieden wird, welche der Implementationen aktiviert wird. Das Ganze nennt man dann (dynamisches) Überschreiben von Methoden.

Natürlich kann man eine virtuelle Methode in einer Klassendefinition als "overload" deklarieren, so daß in abgeleiteten Klassen eine überschriebene Methode sowie weitere überladene Methoden angelegt werden können. Ich hoffe, das hat ein weng geholfen ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz