Hast du es schon bereits verstanden?
Ansonsten eine kleine Erklärung:
Du gibst mit der Funktion via Result etwas zurück. Das macht auch deine Zuweisung deutlich. Wenn man schreibt
a := b dann schreibt man quasi den Inhalt von
b in
a. Das Problem dabei ist, das du nirgends der Funktion sagst, wie denn das erstellte Objekt lautet, dass zurückgegeben wird. Ich mach mal ein Beispiel:
Delphi-Quellcode:
function answer : Integer;
begin
Result := 42 * Result;
end;
var
a : Integer;
begin
a := 10;
a := answer;
ShowMessage(IntToStr(a));
end;
Das ist quasi dein Beispiel: Du initialisierst
a und schreibst dann den Wert der Funktion rein, und versuchst
a in der Funktion zu benutzen. Wahrscheinlich steht nachher im Dialog 0, weil Result normalerweise mit 0 initalisiert wird. Wenn man das jetzt etwas umschreibt und die Funktion umgeht sieht das dann so aus (woraus klar werden dürfte, warum das nicht geht):
Delphi-Quellcode:
var
a, b : Integer;
begin
a := 10;
// Code von answer
b := 42 * b;
a := b;
ShowMessage(IntToStr(a));
end;
Das heißt,
Result ist wie eine lokale Variable und nur in der Funktion sichtbar, womit es nicht den Wert von
a hat.
Ich hoffe das ist soweit verständlich.
MfG
Fabian
PS: Es kann auch sein, dass
a ≠ 0 ist, weil man nicht sicher sein kann, mit was
Result oder
b initalisiert werden. In der Regel wird
a aber 0 sein