AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Ausgabewert einer Function löst sich selber aus (oder so)?
Thema durchsuchen
Ansicht
Themen-Optionen

Ausgabewert einer Function löst sich selber aus (oder so)?

Ein Thema von fortuneNext · begonnen am 31. Okt 2007 · letzter Beitrag vom 1. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2      
fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#1

Ausgabewert einer Function löst sich selber aus (oder so)?

  Alt 31. Okt 2007, 17:00
noch ne kurze frage

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

[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?
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#2

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

  Alt 31. Okt 2007, 17:02
Du solltest besser Result anstatt den Funktionsnamen benutzen!
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von Cyberbob
Cyberbob

Registriert seit: 24. Jan 2005
Ort: Karben
626 Beiträge
 
Delphi XE7 Architect
 
#3

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

  Alt 31. Okt 2007, 17:06
Genau entweder du verwendest Result oder bennenst deine Eigenschaft un.
Man sollte Variablen und Funktionsnamen sowieso getrennt halten!
Christian
  Mit Zitat antworten Zitat
fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#4

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

  Alt 31. Okt 2007, 21:59
Hmm, gibts sonst noch eine Möglichkeit, den Namen der Resultvariable zu ändern?
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

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

  Alt 31. Okt 2007, 22:02
Was ist denn am Namen "Result" für den Rückgabewert so schlimm?

PS: Nein.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

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

  Alt 31. Okt 2007, 22:03
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.
  Mit Zitat antworten Zitat
Benutzerbild von Cyberbob
Cyberbob

Registriert seit: 24. Jan 2005
Ort: Karben
626 Beiträge
 
Delphi XE7 Architect
 
#7

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

  Alt 31. Okt 2007, 22:18
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
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

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

  Alt 31. Okt 2007, 22:31
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 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;
  Mit Zitat antworten Zitat
Benutzerbild von Cyberbob
Cyberbob

Registriert seit: 24. Jan 2005
Ort: Karben
626 Beiträge
 
Delphi XE7 Architect
 
#9

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

  Alt 31. Okt 2007, 22:49
Wenn ich aber Sum := Sum + a; verwende bekomme ich probleme
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#10

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

  Alt 1. Nov 2007, 07:48
Moin

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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:56 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