Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

Re: Array an procedure übergeben

  Alt 23. Dez 2003, 17:32
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.
  Mit Zitat antworten Zitat