Hallo!
Ich habe ein Problem bei der Übergabe eines dynamischen Arrays an eine rekursiv verlaufende procedure. Und zwar wird das array jedes mal verändert, sollte aber (ohne var zusatz in der übergabe) bei rückkehr in die vorherige procedure den alten wert haben. Kurzes Beispielprog:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| type Ta = array of char;
procedure test(a: Ta); var i:integer; begin i:=random(2)+1; if i = 1 then a[0]:='p' else a[0]:='q'; if i = 1 then test(a); showmessage(a[0]); end;
procedure TForm1.Button1Click(Sender: TObject); var a: Ta; begin setlength(a,1); a[0]:='m'; test(a); end; end. |
da kein ranomize aktiviert ist, wird i erst mit 1, 1, 2 besetzt, womit die procedure sich 2 mal selbst aufruft. beim letzten mal wird a auf q gesetzt. kehrt das prog nun in die vorherige procedure zurück, sollte a seinen wert nicht verändert haben (noch auf p sitzen) - tut es aber nicht, es ändert sich auch dort und darüber auf q.
nehme ich statt einem array eine variable vom typ char, klappt es wunderbar, es muss also am dynamic array liegen. wie krig ich das hin?
Danke im vorraus, blacki