Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Prozedur aus einer anderen Prozedur aufrufen (https://www.delphipraxis.net/93940-prozedur-aus-einer-anderen-prozedur-aufrufen.html)

PaddyVII 12. Mär 2015 07:18

AW: Prozedur aus einer anderen Prozedur aufrufen
 
in XE6 (meiner Erfahrung nach zumindest) kann man einfach seine Prozedur aufrufen, wenn die parameter hat gibt man sie mit,w enn nicht dann nicht so einfach ist das...oder irre ich mich?!

baumina 12. Mär 2015 07:23

AW: Prozedur aus einer anderen Prozedur aufrufen
 
Das ist schon immer so. Eine Prozedur oder Funktion, die keine Parameter erwartet benötigt beim Aufruf die zwei unnötigen Klammern () nicht. Das brauchen vielleicht andere Programmiersprachen, Pascal zumindest noch nie.

himitsu 12. Mär 2015 07:33

AW: Prozedur aus einer anderen Prozedur aufrufen
 
Das ist auch garantiert mindestens seit Delphi 7 so.

Es gibt Sprachen, da müssen Proceduren/Funktionen immer mit Parametern aufgerufen werden und sei es nur mit leeren
Delphi-Quellcode:
()
.
Die Verwunderung/Frage hier bestand nun nur noch darin, ob das auch in/vor Delphi 5 so war.

Der TE meint es ginge nicht, aber andere Tests belegen, daß es doch ging.
Meine "Vermutung": DiePprozedur wurde "anfangs" nach dem Aufruf deklariert. (nicht davor, bzw. ohne rechtzeitige Forwarddeklaration)

baumina 12. Mär 2015 08:00

AW: Prozedur aus einer anderen Prozedur aufrufen
 
Schon zu TurboPascal-Zeiten konnte man auf leere Klammern () beim Aufruf einer Prozedur verzichten, das ist also nichts delphispezifisches.

Wenn es natürlich mehrere Sachen gibt, die test heißen (z.B. eine procedure und eine Variable), dann kanns natürlich echt zum Chaos kommen.

himitsu 12. Mär 2015 08:35

AW: Prozedur aus einer anderen Prozedur aufrufen
 
Chaos nicht wirklich.
Es wird ja immer das Test genommen, was als letztes sichtbar ist.

Mikkey 12. Mär 2015 13:03

AW: Prozedur aus einer anderen Prozedur aufrufen
 
Zitat:

Zitat von baumina (Beitrag 1293100)
Das ist schon immer so. Eine Prozedur oder Funktion, die keine Parameter erwartet benötigt beim Aufruf die zwei unnötigen Klammern () nicht. Das brauchen vielleicht andere Programmiersprachen, Pascal zumindest noch nie.

Zumindest dort, wo es sich um eine Prozedurvariable handelt, ist beim Aufruf die Klammerung erforderlich, weil der Compiler sonst nicht erkennt, dass hier die referenzierte Prozedur aufgerufen werden soll.

Soviel zu "noch nie" ;-)

baumina 12. Mär 2015 13:16

AW: Prozedur aus einer anderen Prozedur aufrufen
 
Zitat:

Zitat von Mikkey (Beitrag 1293199)
Zitat:

Zitat von baumina (Beitrag 1293100)
Das ist schon immer so. Eine Prozedur oder Funktion, die keine Parameter erwartet benötigt beim Aufruf die zwei unnötigen Klammern () nicht. Das brauchen vielleicht andere Programmiersprachen, Pascal zumindest noch nie.

Zumindest dort, wo es sich um eine Prozedurvariable handelt, ist beim Aufruf die Klammerung erforderlich, weil der Compiler sonst nicht erkennt, dass hier die referenzierte Prozedur aufgerufen werden soll.

Soviel zu "noch nie" ;-)

Was meinst du denn jetzt genau? Hast du dafür mal ein Beispiel?

Mikkey 12. Mär 2015 14:27

AW: Prozedur aus einer anderen Prozedur aufrufen
 
Zitat:

Zitat von baumina (Beitrag 1293202)

Was meinst du denn jetzt genau? Hast du dafür mal ein Beispiel?

Ich meinte sowas:

Delphi-Quellcode:
type
  TFunc=Function(): Integer;

Function Bar(): Integer;
begin
  Result := 42;
end;

var
  pFunc: TFunc;
  funcResult: Integer;
begin
  pFunc := Bar;
  funcResult := pFunc;
end.
Aber mit dem aktuellen XE7 funktioniert das, beim Delphi7 hat er aber AFAIR noch gemault, dass er Typ Funktion nicht in Integer verwandelt könne.

baumina 12. Mär 2015 15:24

AW: Prozedur aus einer anderen Prozedur aufrufen
 
OK, sowas gabs unter TurboPascal noch nicht.

himitsu 12. Mär 2015 17:32

AW: Prozedur aus einer anderen Prozedur aufrufen
 
Delphi führt an vielen Stellen eine automatische (De)Referenzierung durch.

* Prozedurvariablen
* zuweisen von Prozedurzeigern (x:=@proc = x:=proc)
* Record-Pointer ... sobald da ein Punkt folgt, kann man das ^ weglassen (p^.x = p.x)
(nur bei mehrfachen Pointern muß man aufpassen)
Ist vorallem praktisch, da man den Code später fast problemlos auf Daten-Objekte/Interfaces umstellen kann. :angle:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:02 Uhr.
Seite 3 von 3     123   

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