Registriert seit: 20. Okt 2005
919 Beiträge
Turbo Delphi für Win32
|
Re: Problem bei logischer abfrage
10. Dez 2006, 00:42
Zitat von mkinzler:
Zitat:
spätestens, wenn Du das Ergebnis innerhalb der Funktion noch weiterverwenden willst,
Das sollte man mit result aber auch nicht machen.
Warum nicht?
So steht es in der Delphi-Hilfe:
Zitat von Delphi-Hilfe:
Sie können der Variablen Result oder dem Funktionsnamen im Anweisungsblock mehrmals einen Wert zuweisen. Die zugewiesenen Werte müssen jedoch dem deklarierten Rückgabetyp entsprechen. Sobald die Ausführung der Funktion beendet wird, bildet der Wert, der zuletzt der Variablen Result oder dem Funktionsnamen zugewiesen wurde, den Rückgabewert der Funktion. Zum Beispiel:
Delphi-Quellcode:
function Power(X: Real; Y: Integer): Real;
var
I: Integer;
begin
Result := 1,0;
I := Y;
while I > 0 do
begin
if Odd(I) then Result := Result * X;
I := I div 2;
X := Sqr(X);
end;
end;
Result und der Funktionsname repräsentieren immer denselben Wert. Deshalb gibt die Deklaration
Delphi-Quellcode:
function MyFunction: Integer;
begin
MyFunction := 5;
Result := Result * 2;
MyFunction := Result + 1;
end;
den Wert 11 zurück. Result ist jedoch nicht mit dem Funktionsnamen identisch. Wenn der Funktionsname auf der linken Seite einer Zuweisungsanweisung verwendet wird, verwaltet der Compiler den Funktionsnamen als Variable (wie Result) zur Aufzeichnung des Rückgabewerts. Taucht der Funktionsname dagegen an einer anderen Stelle im Anweisungsblock auf, wird er vom Compiler als rekursiver Aufruf der Funktion interpretiert. Result kann dagegen als Variable in Operationen eingesetzt werden, beispielsweise bei Typkonvertierungen, in Konstruktoren, Indizes und in Aufrufen anderer Routinen.
Wenn die Ausführung einer Funktion beendet wird, bevor Result oder dem Funktionsnamen ein Wert zugewiesen wurde, ist der Rückgabewert der Funktion nicht definiert.
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
|
|
Zitat
|