Also dann so ?
Delphi-Quellcode:
Type EKarte = Record
name: String;
ort: Integer;
status: Integer;
End;
AEKarte = Array of EKarte;
Var P1Ekarte, P2EKarte: AEKarte;
Procedure MixECards(Var PECards: AEKarte);
Var CDummy: EKarte;
ix, p1, p2: Integer;
Begin
For ix := 0 to 10000 do Begin {je mehr Durchgänge, desto mehr wird gemischt}
//2 Karten durch Zufall auswählen, die getauscht werden sollen
p1 := Random(High(PECards));
p2 := Random(High(PECards));
//die Beiden ermittelten Karten austauschen
CDummy := PECards[p1];
PECards[p1] := PECards[p2];
PECards[p2] := CDummy;
End;
End;
IrgendeineProzedur/Funkktion;
Begin
...
{hier sind die Karten noch ungemischt}
MixECards(P1EKarte);
MixECards(P2EKarte);
{und hier sind sie gemischt}
...
End;
Sowas ist doch nicht nötig:
Delphi-Quellcode:
Function MixECards(PECards: AEKarte): AEKarte;
...
P1EKarte := MixECards(P1EKarte);
P2EKarte := MixECards(P2EKarte);
Es geht doch so viel einfacher:
Delphi-Quellcode:
Procedure MixECards(Var PECards: AEKarte);
...
MixECards(P1EKarte);
MixECards(P2EKarte);
Die Angabe von
VAR in der Parameterdeklaration der Prozedur gibt an, dass der übergebene Parameter geändert werden kann, daher ist auch der Umweg über ein zweites Array nicht nötig.