Re: byVal statt byref
From: Andreas Born (Andreas.Born_at_gmx.de)
Date: 07/07/04
- Next message: Andreas Born: "Re: Ameisen"
- Previous message: Andreas Born: "Re: index.dat aus dem Cookie-Ordner löschen"
- In reply to: Jens Müller: "byVal statt byref"
- Messages sorted by: [ date ] [ thread ]
Date: Wed, 7 Jul 2004 05:13:00 +0200
Hallo Jens,
> ich will ein array byVal an eine Sub übergeben und nicht byref.
> Folgendes nimmt er aber nicht an:
>
> Public sub ZnotList(byval Znots() As String)
>
> Er sagt:
> Arrayargument muss als Verweis (byref) übergeben werden. Warum?
Weil VB Arrays nicht kopieren kann (oder will).
Workaround (Umweg über Variant):
Dim A() as String
Call Test(A)
Sub Test(ByRef V As Variant)
Dim B() As String
B = V
'...
End Sub
Nachteil: Die Werte werden zweimal kopiert.
Sofern Du nicht unbedingt ein echtes String-Array in ZnotList benötigst,
sondern nur die jeweiligen Werte, dann arbeite direkt mit einem Variant,
dann allerdings ByRef.
Ansonsten ist es eigentlich besser, das Array ByRef zu übergeben, und
Elemente, die durch andere Funktionen verändert werden könnten, zu
kopieren:
Public sub ZnotList(ByRef Znots() As String)
'entweder:
Call andereFunktion((Znots))
'bzw:
andereFunktion (Znots)
'oder bei einzelnen Elementen
s = Znots(2)
andereFunktion2 s
'bzw:
andereFunktion2 (Znots(2))
End Sub
Viele Grüße,
Andreas
- Next message: Andreas Born: "Re: Ameisen"
- Previous message: Andreas Born: "Re: index.dat aus dem Cookie-Ordner löschen"
- In reply to: Jens Müller: "byVal statt byref"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|