Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

wann ByRef oder ByVal in Function

Empfohlene Antworten

Veröffentlicht

Hi VB 6'ler,

hab da ne Frage. Wann verwende ich ByRef oder ByVal in einer Function und welche Vorteile habe ich davon?

Bis dann :)

hallo jougli,

byref = by reference, als referenz übergeben

byval = by value, als wert übergeben

mit byref ist es möglich, den eingangsparameter innerhalb der aufgerufenen funktion zu verändern.

das nimmt man, wenn man den (geänderten) wert eines parameters ausserhalb der aufgerufenen funktion weiterverwenden möchte.

mit byval kann nur der inhalt eines parameters ausgelesen werden und nicht verändert werden.

praktisches bsp:

du bringst dein auto in die werkstatt, um dieses dort reparieren zu lassen. hier nimmst du byref, da das auto in der werkstatt verändert werden soll (reparatur).

mit byval würdest du nur eine kopie des objektes auto in der werkstatt abgeben und dein original ist nach dem werkstattbesuch immer noch dasselbe wie vorher.

Super Danke, hat mir sehr geholfen.

:)

Hi!

Die Dinge sind unserer Erkenntnis nach manchmal nicht so einfach wie sie scheinen... Hier ein paar Statements eines unserer Entwickler zu dem Thema.

MfG

Christian

----schnipp schnapp----schnipp schnapp----schnipp schnapp--

Klammer oder nicht Klammer, das ist die Frage!

Wahrscheinlich ist den meisten VB-Autodidakten schon die merkwürdige Syntax von VB bezüglich Klammerung von Funktionsparametern aufgefallen: Gibt es nur einen Parameter, darf man ihn klammern, bei zweien aber nicht, es sei denn, man schreibt Call davor usw. usf.

Die Erklärung dafür ist folgende:

Bei Aufrufen ohne Call bedeutet die Klammerung eines Parameters, dass er als Konstante übergeben wird. Auch wenn der Parameter als ByRef definiert ist, kann er dann nicht verändert werden.

Beispiel:

Private Sub Hugo (ByRef i as int)

i = 3

End Sub

...

Dim x as Integer

x = 2

Hugo (x)

' hier ist x immer noch 2

Ohne Klammern beim Aufruf von Hugo wäre x jetzt 3.

Deshalb ist es auch nicht erlaubt, zwei Parameter zu klammern.

Beispiel

Private Sub Hugo (ByRef i as int, j as int)

i = 3

End Sub

...

Dim x as Integer

Dim y as Integer

x = 2

y = 3

Hugo (x,y) ' ! Fehler, es können nicht zwei Parameter zur Konstante werden

Hugo x, y ' Übergabe ByRef (wenn Parameter in Routine so definiert sind)

Hugo (x),(y) ' Erlaubt, Übergabe beider Parameter als Konstante

Anders ist es, wenn der Funktionsaufruf mit Call erfolgt. Hier ist immer eine Klammerung der Parameterliste notwendig. Man darf aber zusätzlich einzelne Parameter klammern, wenn man sie als Konstanten übergeben will.

Beispiel:

Private Sub Hugo (ByRef i as int, j as int)

i = 3

End Sub

...

Dim x as Integer

Dim y as Integer

x = 2

y = 3

Call Hugo (x,y) ' Übergabe ByRef (wenn Parameter in Routine so definiert sind)

Call Hugo ((x),(y)) ' Erlaubt, Übergabe beider Parameter als Konstante

Bischen pervers ist das Ganze natürlich, weil man einfach das ByRef-Verhalten ausschalten kann. Wichtig ist nur, dass man auch weiss, wenn man das macht, und die Klammern nicht nur nach Lust und Laune oder aus ästhetischen Gründen setzt.

Hi Christian Leverenz,

und wie ist es, wenn ich eine Funktion aus einem ActiveX-Objekt (COM) aufrufe? Dann wird der Patameter doch immer in Klammern übergeben? Den wenn ich aus ASP auf diese Klasse zugreife, erzeuge ich erst ein Objekt und dann rufe ich die Funktion auf. (Aber ohne Call).

Danke

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.