Discussion:
Verstehe Fehler: Argumenttyp ByRef unverträglich nicht
(zu alt für eine Antwort)
Roman Mayer
2004-07-09 12:12:13 UTC
Permalink
Hi NG,

ich habe die oben genannte Fehlermeldung. Access markiert die erste Zeile
der Sub gelb und ein Übergabeparameter an eine Funktion wird blau
hinterlegt.

Die Varable, die übergeben wird, hat den gleichen Typ wie die, die von der
Funktion erwartet wird.

Weiß jemand, woran das liegen kann?
Jörg Ackermann
2004-07-09 12:33:39 UTC
Permalink
Hi,
Post by Roman Mayer
Hi NG,
ich habe die oben genannte Fehlermeldung. Access markiert die erste
Zeile der Sub gelb und ein Übergabeparameter an eine Funktion wird
blau hinterlegt.
Die Varable, die übergeben wird, hat den gleichen Typ wie die, die
von der Funktion erwartet wird.
Code-Beispiel bitte

Gruß
Roman Mayer
2004-07-09 12:38:23 UTC
Permalink
Dim i, j, k As Integer

call function(i, j, k)

j ist markiert

Ich hab inzwischen zwei Möglichkeiten gefunden, den Fehler zu umgehen:

Man kann das j einklammern:

call function(i, (j), k)

Oder man macht die Dekleration anders:

Dim i As Integer
Dim j As Integer
Dim k As Integer

Wieso es dann geht, weiß ich nicht, aber es geht
Jörg Ackermann
2004-07-09 12:44:24 UTC
Permalink
Hi,
Dann ist ja gut, über Pseudocode will ich nicht nachdenken.

Gruß
Josef Poetzl
2004-07-09 12:47:44 UTC
Permalink
Hallo!
Post by Roman Mayer
Dim i, j, k As Integer
Damit machst Du folgendes:
Dim i as Variant, j as Variant, k as Integer
Post by Roman Mayer
call function(i, j, k)
j ist markiert
call function(i, (j), k)
=> damit wird vermutlich eine interne Konvertierung gestartet, welche
dann ein neues "Objekt" weitergibt.
Ähnlich wie CInt(j)

mfg
Josef
--
EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/
Roman Mayer
2004-07-09 12:59:20 UTC
Permalink
Danke Josef,

dann versteh ichs auch und muss nochmal durch den Code gehen und das überall
ändern
Post by Josef Poetzl
Hallo!
Post by Roman Mayer
Dim i, j, k As Integer
Dim i as Variant, j as Variant, k as Integer
Post by Roman Mayer
call function(i, j, k)
j ist markiert
call function(i, (j), k)
=> damit wird vermutlich eine interne Konvertierung gestartet, welche
dann ein neues "Objekt" weitergibt.
Ähnlich wie CInt(j)
mfg
Josef
--
EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/
Michael Zimmermann
2004-07-09 13:01:28 UTC
Permalink
Hallo!
Post by Roman Mayer
Dim i, j, k As Integer
D. h. Dim i As Variant, j As Variant, k As Integer
In diesen Hundehaufen sind auch schon andere getreten.
;-)
Post by Roman Mayer
call function(i, j, k)
j ist markiert
Ich hab inzwischen zwei Möglichkeiten gefunden, den
call function(i, (j), k)
Durch die Klammern wird es ByVal statt ByRef übergeben.

Die Call-Anweisung ist übrigens überflüssig, es geht
auch so.

Du kannst den Übergabetyp ByRef und ByVal auch wörtlich
vorgeben:

Public Function Test( _
ByRef a as Long, _
ByVal b as Long, _
etc...)
As Long

ByRef ist Default.
Sag besser: "Oder man macht die Dekleration richtig"
Post by Roman Mayer
Dim i As Integer
Dim j As Integer
Dim k As Integer
Es ginge auch:
Dim i As Integer, j As Integer, k As Integer

Hintergrund: Mit ByRef übergibst Du einer Prozedur
einen Zeiger auf die Variable im RAM, d. h. die
Prozedur könnte die Variable ändern. Mit ByVal
übergibst Du den tatsächlichen Inhalt der Variablen.
Daher weiß die Prozedur nicht, wo die Originalvariable
lokalisiert ist, und hat daher auch keinen Schreibzugriff.

Lies Mal in der OH zu den Stichworten Variablendeklaration,
ByVal(ue) und ByRef(erence)

Gruß aus Mainz
Michael
Thomas Möller
2004-07-09 12:28:29 UTC
Permalink
Hallo Roman,
Post by Roman Mayer
ich habe die oben genannte Fehlermeldung. Access markiert die erste
Zeile der Sub gelb und ein Übergabeparameter an eine Funktion wird
blau hinterlegt.
Die Varable, die übergeben wird, hat den gleichen Typ wie die, die
von der Funktion erwartet wird.
in solchen Fällen ist es immer hilfreich den konkreten Code zu posten., der
den Fehler auslöst.

CU
--
Thomas

Homepage: www.team-moeller.de

TM-AbhängigeObjekte: Update auf Version 3.72 (seit 19.06.04)
Jetzt auch Klassenmodule und Prozeduren berücksichtigen.
Loading...