Unterschiede in Subaufruf mit und ohne Call

Lutz-Hamburg

Grünschnabel
Hi,
ich habe irgenwo einmal gelesen, dass es einen Unterschied macht, ob ich eine Sub mit Call oder ohne Call aufrufe.

Gibt es da noch Unterschiede ausser der Klammersetzung im Aufrufer?
Vielleicht in der Parameterbehandlung? Laufzeit?
 
Es gibt einen wesentlichen Unterschied, und der liegt darin, auf welche Art die Parameter übergeben werden.
Dabei unterscheidet man ByRef und ByVal.

Bei ByRef wird die Adresse der Variablen übergeben, bei ByVal nur der Wert der zu übergebenen Variablen (im Prinzip eine Kopie des Inhaltes).

Erfolgt der Aufruf mit
Subname Variable
so wird nicht der Wert der Parameter, sondern die Adresse der Variablen übergeben.
Beim Aufruf
Subname (Variable)
erfolgt die Parameterübergabe ByVal, also die Werte der Variablen werden übergeben.

Und mit Call aufgerufene Methoden erhalten die Parameter ByRef, dh sie können diese auch verändern, und sie nicht nur für zB Rechenoperationen verwenden.

Dies gilt natürlich nur, wenn die Variablen im Funktions- bzw Prozedurenkopf nicht anders deklariert wurden.

Ich hoffe, dass ist einigermaßen verständlich, :-)

lg D;-]c
 
Zurück