Array aus Funktion aufrufen

09/11/2010 - 13:34 von Marco Schmid | Report spam
Liebe Newsgroup!
Ich habe eine allgemeine Frage: Wenn ich aus einem Hauptprogramm aus
eine Funktion starte, welche auf eine Array zugreifen kann (welches im
Hauptprogramm initialisiert wurde), kann ich das meiner Meinung nach
auf 2 Arten tun.

1. Array der Funktion übergeben oder
2. Array global deklarieren

Frage: Wenn ich 1. wàhle, wird dann bei der Variableübergabe nur ein
Zeiger auf das Array übergeben oder gleich eine Kopie des Arrays. Dies
ist für mich insofern wichtig, da ich aus einer Vielzahl von
verschiedenen Funktionen immer auf das gleiche Array zugreifen muss
und das Array unter Umstànden sehr gross ist. Macht es unter diesem
Gesichtspunkt mehr Sinn das Array global zu deklarieren. Wie sieht es
mit den Speicher- bzw. Geschwindigkeitsdifferenzen der beiden
Varianten aus?

Besten Dank für eureInputs und liebe Grüsse
Marco
 

Lesen sie die antworten

#1 Bernhard Sander
09/11/2010 - 15:21 | Warnen spam
Hallo Marco,

Ich habe eine allgemeine Frage: Wenn ich aus einem Hauptprogramm aus
eine Funktion starte, welche auf eine Array zugreifen kann (welches im
Hauptprogramm initialisiert wurde), kann ich das meiner Meinung nach
auf 2 Arten tun.

1. Array der Funktion übergeben oder
2. Array global deklarieren

Frage: Wenn ich 1. wàhle, wird dann bei der Variableübergabe nur ein
Zeiger auf das Array übergeben oder gleich eine Kopie des Arrays. Dies
ist für mich insofern wichtig, da ich aus einer Vielzahl von
verschiedenen Funktionen immer auf das gleiche Array zugreifen muss
und das Array unter Umstànden sehr gross ist. Macht es unter diesem
Gesichtspunkt mehr Sinn das Array global zu deklarieren. Wie sieht es
mit den Speicher- bzw. Geschwindigkeitsdifferenzen der beiden
Varianten aus?



Laut Hilfe zu Function(), Sub() und anderen ist in VBA die Voreinstellung ByRef,
sprich es wird keine Kopie des Parameters übergeben sondern ein Verweis auf den
Parameter. Wenn man doch eine Kopie benötigt, muss man das in der Function(...)
oder Sub(...) Zeile über das Schlüsselwort ByVal vor dem jeweiligen Parameter
eigens angeben.

Ich würde mich bei der Frage, ob globales Array oder als Parameter übergebenes
Array, eher davon leiten lassen, was für das Verstàndnis des Programmpakets
sinnvoller ist. Nach Deiner Beschreibung hat das Array sehr wohl globale
Bedeutung für das Paket, sodass ich es wahrscheinlich eher als globales Array
anlegen würde.
Das Weitergeben als Parameter ist spàtestens dann wichtig, wenn die gleiche
Prozedur mit verschiedenen Arrays aufgerufen werden soll/muss.

Gruß
Bernhard Sander

Ähnliche fragen