Es ist echt schwer Dir zu antworten, ohne genau zu wissen, was Du eigentlich bezweckst! Ich spekulier daher mal ins Blaue hinein:
Du hast ein Spielfeld, was Du variabel ändern kannst. Dazu hast Du bisher global ein TArray definiert.
Wenn Du anstatt diesem TArray eine Variabel vom Typ >array of interger< oder einem anderem Typ nimmst, kannst Du ihn direkt bearbeiten. Dann benötigst Du auch keine Funktion, die Dir einen Rückgabewert liefert, dies kann dann mit Hilfe einer Procedure erfolgen.
Ich versuche mal Deinen Code nachzubilden:
Code: Alles auswählen
procedure tAlgorithmus.Neue_Dame;
var
lX : longint;
i : integer;
lTeilloesung : Array of Integer;
begin
// setlength(lTeilloesung, length(pTeilloesung)); //Länge des global definierten Arrays übernehmen
// for i:=0 to high(lTeilloesung) do lTeilloesung[i]:=0; //Werte in Array schreiben, damit nicht "irgendwas" darin steht oder
lTeilloesung:=copy(pTeilloesung); //Werte von globalen Array (pTeilloesung) übernehmen
repeat
lX := lTeilloesung[high(lTeilloesung)]; //was Du mit dem letzten Array-Wert bezweckst, ist mir unklar
lTeilloesung[high(lTeilloesung)]:= 0;
lTeilloesung := DameHinzufuegen(lTeilloesung, lX+1); //ebenso, was dann hier geschieht
until (length(lTeilloesung)=length(pTeilloesung)) or (length(lTeilloesung)=0);
if length(lTeilloesung)>0 then begin //Nur wenn lTeilloesung die gleiche Anzahl der Felder hat, den globalen pTeilloesung-Array füllen
//Dies wird aber schon beim ersten Durchlauf der Schleife passieren, da setlength dies zuvor gemacht hat
pTeilloesung:=copy(lTeilloesung);
end;
end;
Evtl. so???