Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

VB6.0 Datenfeld-Variable übergeben





Frage

Hi, Wie der Titel sagt möchte ich eine Datenfeldvariable (integer) von einer Sub in eine andere übergeben. Mit den einwertigen Variablen ist das kein Problem, allerdings bekomme ich immer den Fehler, dass das Datenfeldargument als "ByRef" übergeben werden muss, wenn ich beispielsweise die Sub so aufrufe: Spellint (delposition) Habe auch schon versucht an allen möglichen Stellen die Referenz hinzuklatschen ;) aber ohne Erfolg und die Hilfe schweigt sich auch über ByRef tot. Schätze mal in der aufzurufende Sub muss auch in den Klammern was anderes stehen, als bei Übergabe von "normalen" Variablen. Gruß, gasmann

Antwort 1 von nighty

hi gasmann :)

kenn mich nur wenig aus leider :)

vermute mal var ist local deklariert,deklariere sie global :)

gruss nighty

Antwort 2 von HolyMole

ByRef Steht für "By Reference". Variablen die auf diese Weise übergeben wurden, sind dadurch direkt referenziert. Das bedeutet es wird nicht ein Wert übergeben, sondern lediglich ein Zeiger auf die Position der Variablen im Speicher. Das hat zur Folge daß im Gegensatz zu ByVal alle Änderungen dieser Variablen in der bearbeitenden Funktion oder Sub direkt auf die ursprüngliche Variable einwirken, da ja von hier aus direkt darauf verwiesen wird. ByRef ist unter VB standardmäßig eingestellt, d.h. wird das Schlüsselwort ByVal nicht explizit angegeben, gilt automatisch ByRef.

Im Gegensatz dazu:
ByVal Steht für "By Value", was soviel bedeutet wie "als Wert". Dies erklärt auch gleich seine Funktion: Eine als mit ByVal übergebene Variable wird als Wert übergeben, d.h. es wird eine Kopie erstellt und nur dieser an den Prozedurkopf einer Funktion oder Sub weitergegeben. Wird in Folge, in der Funktion, der Wert geändert, hat das keine rückwirkenden Auswirkungen auf die ursprünglich übergebene Variable. Der Zusammenhang wir vielleicht durch die Erläuterungen zum Schlüsselwort ByRef deutlicher.

(Aus dem API-Tutorial von http://www.activevb.de)


Antwort 3 von HolyMole

In dem Tutorial gibt es übrigens auch noch Beispiele zu beiden Fällen.

Antwort 4 von gasmann

Vielen Dank für die Antworten.

Habe anhand des Beispiels im Tutorial meinen Fehler erkannt. Echt genial das Tutorial!

Gruß,
gasmann