Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ausgabewert einer Function löst sich selber aus (oder so)? (https://www.delphipraxis.net/102595-ausgabewert-einer-function-loest-sich-selber-aus-oder-so.html)

fortuneNext 31. Okt 2007 17:00


Ausgabewert einer Function löst sich selber aus (oder so)?
 
noch ne kurze frage

Delphi-Quellcode:
Encrypt := Encrypt + IntToStr(RealFirstNumber);
Encrypt ist ein leerer String, realfirstnumber die integerzahl 4.

Delphi-Quellcode:
[Error] unitMain.pas(602): Not enough actual parameters
Das Problem ist, dass die Variable Encrypt den selben Namen hat wie die Function, von der sie der Ausgabewert ist. Wie lässt sichd as umgehen?

inherited 31. Okt 2007 17:02

Re: Ausgabewert einer Function löst sich selber aus (oder so
 
Du solltest besser Result anstatt den Funktionsnamen benutzen!

Cyberbob 31. Okt 2007 17:06

Re: Ausgabewert einer Function löst sich selber aus (oder so
 
Genau entweder du verwendest Result oder bennenst deine Eigenschaft un.
Man sollte Variablen und Funktionsnamen sowieso getrennt halten!

fortuneNext 31. Okt 2007 21:59

Re: Ausgabewert einer Function löst sich selber aus (oder so
 
Hmm, gibts sonst noch eine Möglichkeit, den Namen der Resultvariable zu ändern?

Dax 31. Okt 2007 22:02

Re: Ausgabewert einer Function löst sich selber aus (oder so
 
Was ist denn am Namen "Result" für den Rückgabewert so schlimm?

PS: Nein.

Matze 31. Okt 2007 22:03

Re: Ausgabewert einer Function löst sich selber aus (oder so
 
Nein, man sollte generell Variablen anders benennen als Funktionen und ähnliches. Es kann doch kein großes Problem sein, die Variable "Encrypt" umzubenennen. Refractoring hilft dir sogar dabei.

Cyberbob 31. Okt 2007 22:18

Re: Ausgabewert einer Function löst sich selber aus (oder so
 
Zitat:

Zitat von Dax
Was ist denn am Namen "Result" für den Rückgabewert so schlimm?

Die Frage versteh ich jetzt nicht. Result ist immer der Rückgabewert einer Funktion. Wobei du ihn in Delphi sogar mehrmals ändernkannst und de Funktion erst verlassen wird, wenn du es sagst (Anderst als in C/C++).
Wenn er eine Variable mit dem gleichen Namen wie der einer Funktion verwendet, geht der Compiler davon aus, dass die Funktion gemeint ist und ruft sie rekursiv wieder auf. Solange bis ein Stack-Überlauf auftritt.

Gruss,
Christian

Matze 31. Okt 2007 22:31

Re: Ausgabewert einer Function löst sich selber aus (oder so
 
Zitat:

Zitat von Cyberbob
Die Frage versteh ich jetzt nicht. Result ist immer der Rückgabewert einer Funktion. Wobei du ihn in Delphi sogar mehrmals ändernkannst und de Funktion erst verlassen wird, wenn du es sagst (Anderst als in C/C++).

Der Thread-Ersteller möchte einen Wert zurückgeben, ohne "Return" nutzen zu müssen, da eine seiner Variablen so heißt. Mehr Möglichkeiten als die 2 genannten gibt es nunmal nicht.

Zitat:

Zitat von Cyberbob
Wenn er eine Variable mit dem gleichen Namen wie der einer Funktion verwendet, geht der Compiler davon aus, dass die Funktion gemeint ist und ruft sie rekursiv wieder auf. Solange bis ein Stack-Überlauf auftritt.

Nein, du rufst die Funktion nicht auf. Anstelle von "Result" kann man auch den Funktionsnamen nutzen, was sogar in Pascal die einzige Möglichkeit war, einen Wert zurückzugeben. Dies ist vermutlich aus Kompatibilitätsgründen in Delphi weiterhin möglich, meiner Meinung nach jedoch nicht unbedingt zu empfehlen.

Edit:

Zur Verdeutlichung ein Beispiel. Beides funktioniert (der Sinn der Funktion sei mal dahingestellt):

Delphi-Quellcode:
function Sum(a, b: Integer): Integer;
begin
  Result := a + b;
end;

function Sum(a, b: Integer): Integer;
begin
  Sum := a + b;
end;

Cyberbob 31. Okt 2007 22:49

Re: Ausgabewert einer Function löst sich selber aus (oder so
 
Wenn ich aber Sum := Sum + a; verwende bekomme ich probleme

Matze 1. Nov 2007 07:48

Re: Ausgabewert einer Function löst sich selber aus (oder so
 
Moin

Zitat:

Zitat von Cyberbob
Wenn ich aber Sum := Sum + a; verwende bekomme ich probleme

Ach das meinst du. Jupp, wenn die Funktion keine Parameter erwartet, dann ist das richtig. Doch die Funktion von fortuneNext erwartet Parameter, was man an der Compilermeldung sieht. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 Uhr.
Seite 1 von 2  1 2      

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