Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#34

Re: PosExUltra - Ultimative Stringsuche/Parser

  Alt 26. Feb 2010, 10:21
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
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat