Nein, beim Result ist es was Anderes, der wird nicht automatisch initialisiert, so wie es bei normalen Variablen der Fall ist.
Wie gesagt, probier es einfach mal aus.
ShowMessage zeigt nacheinander dieses an:
1. Aufruf: Result/S=321
2. Aufruf: Result/S=321321
3. Aufruf: Result/S=321321321
4. Aufruf: Result/S=321321321321
5. Aufruf: Result/S=321321321321321
6. Aufruf: Result/S=321321321321321321
7. Aufruf: Result/S=321321321321321321321
8. Aufruf: Result/S=321321321321321321321321
9. Aufruf: Result/S=321321321321321321321321321
10. Aufruf: Result/S=321321321321321321321321321321
Dieser Code:
Delphi-Quellcode:
function ReverseString(const s: Ansistring): Ansistring;
var i : integer;
begin
for i := Length(s) downto 1 do
Result := Result + s[i];
end;
var S, S2: AnsiString;
i: Integer;
S := '123';
for i := 0 to 9 do
begin
S2 := ReverseString(S);
ShowMessage(S2);
end;
enspricht intern eigentlich diesem:
Delphi-Quellcode:
procedure ReverseString(const s: Ansistring; var Result: Ansistring);
var i : integer;
begin
for i := Length(s) downto 1 do
Result := Result + s[i];
end;
var S, S2: AnsiString;
i: Integer;
S := '123';
for i := 0 to 9 do
begin
ReverseString(S, S2);
ShowMessage(S2);
end;
Und nun erkennt man bestimmt auch, warum es dort nicht funktioneren kann.