Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Zwei Funktionen mit dem selben Namen? (https://www.delphipraxis.net/210865-zwei-funktionen-mit-dem-selben-namen.html)

EvoOlli 23. Jun 2022 14:32

AW: Zwei Funktionen mit dem selben Namen?
 
Im Quellcode macht es auch Borland mit overload;

Rolf Frei 23. Jun 2022 14:32

AW: Zwei Funktionen mit dem selben Namen?
 
Die Doku sagt nichts darüber aus, wie es denn effektiv in den Sourcen steht. Schau dir dazu die Sourcen an, die sind massgebend. Das folgende stammt aus System.SysUtils.pas:
Delphi-Quellcode:
unction Format(const Format: string;
  const Args: array of const): string; overload;
function Format(const Format: string; const Args: array of const;
  const AFormatSettings: TFormatSettings): string; overload;

NoGAD 23. Jun 2022 14:39

AW: Zwei Funktionen mit dem selben Namen?
 
Ich bedanke mich ganz herzlich bei euch. :-)



Zu den Funktionen habe ich noch eine weitere Frage:

Wie ist das technisch eigentlich von Borland geregelt, dass erkannt wird, welche Funktion aufgerufen wird?

Als Beispiel habe ich jetzt noch:

Delphi-Quellcode:
var
  Absatz: Integer;
  UsePre: Boolean;
  Variante: TLoremIpsumVariant;
{..}
function CreateLoremIpsum(aWorte: Integer; aVariante: TLoremIpsumVariant): String;
begin
  Result := CreateLoremIpsum(aWorte, Absatz, UsePre, aVariante);
end;
gemacht und der Compiler kommt dennoch nicht durcheinander mit einer anderen 2-Parameter-Funktion.

LG :-)

Neutral General 23. Jun 2022 15:11

AW: Zwei Funktionen mit dem selben Namen?
 
Der Compiler schaut ja nicht nur auf die Anzahl der Parameter sondern auch auf den Typ.

Wenn du 2 gleichnamige Funktionen hast
Delphi-Quellcode:
procedure Test(a: String; b: String);
procedure Test(a: String; b: Integer);
und dann so einen Aufruf:
Delphi-Quellcode:

Test('Hallo', 23);
Dann kann der Compiler ja anhand der Parameter ableiten welche Funktion gemeint ist.

himitsu 23. Jun 2022 15:16

AW: Zwei Funktionen mit dem selben Namen?
 
Anhand der Typen, welche beim Aufruf übergeben werden.

Delphi-Quellcode:
procedure abc(i: Byte); overload;
procedure abc(i: string); overload;
Delphi-Quellcode:
procedure abc(i: Byte); overload;
procedure abc(i: Integer); overload;
also
Delphi-Quellcode:
var x: Byte; abc(x);
geht immer,
aber mit
Delphi-Quellcode:
abc(1);
gibt es beim Zweiten ein Problem, denn was ist 1 für ein Typ?

Auch muß man z.B. bei Überladungen von Pointer und TObjekt aufpassen.
Gibt man da eine Variable rein, dann geht es immer, aber bei
Delphi-Quellcode:
abc(nil);
ist es wieder nicht eindeutig.

Sinspin 23. Jun 2022 16:10

AW: Zwei Funktionen mit dem selben Namen?
 
[OT]
Zitat:

Zitat von NoGAD (Beitrag 1507726)
... Borland...

:gruebel:
Würdest du jetzt in Bielefeld leben und nicht in Weimar, würde ich sagen, "Ok, so leicht kommen Informationen halt nicht nach Bielefeld. Da kann man verstehen das es noch nicht durchgedrungen ist dass die jetzt Embarcadero heißen". Aber Du lebst ja in Weimar. Da gibt es zwar eine Gärtnerei Bielefeld, aber ansonsten sind dort alle voll auf dem Laufenden.
[/OT]

himitsu 23. Jun 2022 16:26

AW: Zwei Funktionen mit dem selben Namen?
 
Nja, eigentlich heißt die Firma ja bereits Idera, aber Dubai ist vielleicht noch zu weit weg. :stupid:


Alles heißt Maggi, auch wenn es nicht von Maggi ist.

NoGAD 23. Jun 2022 17:09

AW: Zwei Funktionen mit dem selben Namen?
 
:)


Danke für die Erklärung.

Somit wäre es nicht möglich, zwei Funktionen von einer "langen" abzuleiten / zu erstellen, die im Prinzip vom Typ her gleich sind, aber andere Parameter besitzen:

1. Function bla (X:integer; y:boolean; x: boolean): Boolean; overload;
2.1 Function bla (X:integer; x: boolean): Boolean; overload;
2.2 Function bla (X:integer; y:boolean): Boolean; overload;

2.2. waäre dann nicht möglich, weil der compiler nicht weiß, was was ist, richtig?


OT: Rad Studio ist für mich immer noch Delphi und Borland ist die FA, die ich damit in Verbindung bringe ;-)

LG Mathias.

Neutral General 23. Jun 2022 17:21

AW: Zwei Funktionen mit dem selben Namen?
 
Zitat:

Zitat von NoGAD (Beitrag 1507739)
2.2. waäre dann nicht möglich, weil der compiler nicht weiß, was was ist, richtig?

richtig.

Zitat:

Zitat von himitsu (Beitrag 1507734)
Nja, eigentlich heißt die Firma ja bereits Idera, aber Dubai ist vielleicht noch zu weit weg. :stupid:

Nur der Vollständigkeit halber: Codegear
Jetzt haben wir glaube ich alle durch :mrgreen:

NoGAD 23. Jun 2022 18:01

AW: Zwei Funktionen mit dem selben Namen?
 
Zitat:

Zitat von Neutral General (Beitrag 1507740)
Zitat:

Zitat von NoGAD (Beitrag 1507739)
2.2. waäre dann nicht möglich, weil der compiler nicht weiß, was was ist, richtig?

richtig.

Zitat:

Zitat von himitsu (Beitrag 1507734)
Nja, eigentlich heißt die Firma ja bereits Idera, aber Dubai ist vielleicht noch zu weit weg. :stupid:

Nur der Vollständigkeit halber: Codegear
Jetzt haben wir glaube ich alle durch :mrgreen:

Danke :-)


Nebenbei, Idera scheint doch korrekt zu sein.

https://www.embarcadero.com/de/company/about-us


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr.
Seite 2 von 3     12 3      

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