AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Zurückgeben von Arrays

Ein Thema von 3_of_8 · begonnen am 18. Jun 2006 · letzter Beitrag vom 19. Jun 2006
Antwort Antwort
alzaimar
(Moderator)

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

Re: Zurückgeben von Arrays

  Alt 19. Jun 2006, 07: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
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz