Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#21

Re: Verhält sich "Result" wie eine globale Variabl

  Alt 9. Jan 2008, 16:56
Zitat von BloodySmartie:
Okay, also mal anders:

Delphi-Quellcode:
var
s:string;
a:array of char[2];

begin
a[0]:='1';
a[1]:='1';
s:=getStringfromCharArr(a);
//s enhält an dieser Stelle '11'
//weiter...
a[0]:='2';
a[1]:='2';
s:=getStringfromCharArr(a);
//Ich hätte nun erwartetn, dass in s '22' steht. - "Neuer Funktionsaufruf, neues Glück."
//Stattdessen steht darin aber '1122'.
end.
Vielleicht isses jetzt besser verständlich.
Schau dir das doch mal im Debugger in der CPU-Ansicht an.
Wenn der Rückgabewert einer Funktion ein String ist, dann wird der Funktion beim Aufruf die Adresse, an der das Ergebnis der Funktion gespeichert werden soll, mitgegeben. Result ist in diesem Fall also nicht eine lokale Variable der aufgerufenen Funktion, sondern eine Variable der aufrufenden Funktion/Prozedur.
Im Prinzip ist das so, als würdest du getStringfromCharArr nicht als Funktion deklarieren sondern als Prozedur mit einem var-Parameter für das Ergebnis, also :
Delphi-Quellcode:
Procedure getStringfromCharArr(ca:array of char: var result:string);
var i,l:integer;
begin
// result:=''; ---Problemlösung :)
l:=length(ca);
for I := 0 to l - 1 do begin
  result:=result+string(ca[i]);
end;
end;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat