Thema: Delphi Zurückgeben von Arrays

Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Zurückgeben von Arrays

  Alt 19. Jun 2006, 08:33
Wenn eine Prozedur/Funktion/Methode ein Array zurückliefern soll, muss es als 'Var' deklariert sein, und nicht nur eventuell, sondern garantiert.
'Var' bedeutet, das Änderungen am Parameter dem Aufrufer nicht verborgen bleiben. Ohne das 'Var' wird vor dem Aufruf eine Kopie angelegt. Die aufgerufene Methode pfuscht dann in der Kopie herum. Nach Beendigung der Methode sind alle Änderungen futsch.

Um nun Arrays als Rückgabeparameter zu deklarieren, gibt es zwei Möglichkeiten: Entweder man vereinbart einen Datentypen (a) oder man verwendet offene Arrays (b).

Möglichkeit a:
Delphi-Quellcode:
Type
  TMyArray = Array [0..9] Of TSomething;
...
Procedure MyProcedure (Var aMyArray : TMyArray);
Begin
...
End;
...
Var
  a : TMyArray;
Begin
  MyProcedure (a);
End;
oder b:
Delphi-Quellcode:
Procedure MyProcedue (Var aMyArray : Array Of TSomething);
Begin
...
End;
...
Var
  a : Array [0..4] Of TSomething;
  b : Array [0..999] Of TSomething;

Begin
  MyProcedure (a);
  MyProcedure (b);
End;
Natürlich geht auch c:
Delphi-Quellcode:
Type
  TMyArray = Array [0..9] Of TSomething;
...
Function MyFunction : TMyArray;
Begin
  Result[0] := Foobar;
End;
...
Var
  a : TMyArray;
Begin
  a := MyFunction;
End;
Variante c ist kein Standard-Pascal aber legitim. Ich finde häßlich, aber das ist Geschmackssache.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat