Variable Falsch? Eine Ausnahme vom Typ "System.ArgumentNullException"

  • VB.NET

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von sourceone.

    Ja, es hängt immer sehr an der korrekten Verwendung von Begriffen.
    Und da muss man möglichst genau sein, denn die Begriffe ähneln einander zum Teil, hängen oft iwie zusammen, und ergeben nur bei richtigem Gebrauch einen Sinn - manchmal auch bei falschem Gebrauch, das ist noch schwieriger, denn dann ergeben sie einen anderen Sinn, als gemeint war.

    Hier paar Grundlagen: Fachbegriffe
    Hey Leute,

    Ich versuche mittels Verweis, auf ein anderes Programm Zugriff zu bekommen.
    Der Verweis wird erkannt. Nun möchte ich prog1 in prog2 aufrufen, mittels eines Buttons.
    Probiere schon ewig rum und habe etliche Beiträge gelesen nur komme ich nicht weiter.

    Programm 1 heißt XMLDoc
    Programm 2 XML2DocGUI

    In XMLDoc gibt es folgende Klasse die auch Public ist: ThisDocument

    wie kann ich diese klasse ThisDocument bzw. das Programm XMLDoc in XML2DocGUI unter einem Button aufrufen?

    Hier mal ein Versuch:

    VB.NET-Quellcode

    1. ​Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 'Für ThisDocument Microsoft.Office.Tools.Word.dll einbinden
    2. Dim getXML As New ThisDocument(ByVal bla As Object, ByVal blubb As Object) 'ByVal Ausdruck erwawrtet?
    3. 'getXML.GetXmlFromResource = GetXmlNamespace()
    4. 'getXML = New ThisDocument(ByVal bla As Object, ByVal blubb As Object)
    5. End Sub


    ThisDocument wird durch den Import XMLDoc erkannt.
    Momentan wird mir als Fehler angezeigt: ByVal Argument erwartet!


    Also,
    1) wie kann ich den Aufruf durchführen,
    2) Falls der Aufruf so stimmen sollte, wo ist der Fehler bei "ByVal"?

    Besten Dank im Voraus

    Gruß
    Grundsätzlicher Tipp: code nur, was du auch verstehst (bzw. kümmer dich sofort darum, zu verstehen, was du codest).
    Hier scheint dir das ByVal-Schlüsselwort unbekannt zu sein - aber trotzdem verwendest du's - natürlich falsch.
    ByVal ist nämlich nur in Methoden-Deklarationen gültig, nicht im Methoden-Aufruf (guck dein Code: New ThisDocument( , ) ruft die Konstruktor-Methode der ThisDocument-Klasse auf).

    So, das sind jetzt schon einige ganz grundlegende (Must know!) Stichworte, die ich dir geliefert hab, und du solltest recherchieren, was die bedeuten, dann verstehst du auch, was ich gesagt hab. Versuch besser nicht, dir iwas zusammenzureimen und ohne oder mit nur halb-Verständnis weiterzuwursteln, (oder was mir auch oft widerfährt: meine Einlassung zu ignorieren).
    Von Ignorieren wird die ja nicht unwahr, und Fakt ist, du musst das wissen und verstehen, wassich gesagt hab.
    1. Schlüsselwort
    2. (Methoden-)Deklaration
    3. (Methoden-)Aufruf
    4. ByVal / (ByRef)
    5. Sub New() - Konstruktor
    6. Parameter, Parameterliste
    7. Klasse (ThisDocument ist eine Klasse der Word-Dll)
    In Grundlagen: Fachbegriffe ist einiges davon angesprochen, und ausserdem ist da sowohl auf Bücher verlinkt als auch auf die Dokumentation der Schlüsselworte (weisst ja: ByVal ist ein Schlüsselwort (und du weisst ja auch, was ein Schlüsselwort ühaupt ist))

    Aber ich kann dir auch deine Zeile korrigieren - tu ich nur ungern, weil möglicherweise kannst du dann erstmal weiterwursteln ohne Verständnis:

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    2. Dim getXML As New ThisDocument("bla", "blubb")
    3. End Sub
    Wie gesagt: Schlüsselworte haben in der Parameterliste nichts verloren, weder ByVal noch As.
    Beim Methoden-Aufruf sind halt gültige Parameter anzugeben, also Variablen, die der Methode das mitteilen, was die Methode braucht.
    Ich bezweifel übrigens, dass es in der Word-Dll überhaupt einen ThisDocument-Konstruktor gibt, der 2 Parameter verlangt (wie es hier gegeben ist). Aber das kann ich nicht wissen, ich hab die Word-Dll nicht.
    Vielleicht gibts den Konstruktor ja tatsächlich, dann bleibt immer noch die Frage, welche Parameter denn wohl sinnvoll wären, damit der Konstruktor ein ThisDocument erzeugen kann - "Bla" und "Blubb" sind sicherlich nicht sinnvoll, und werden einen Laufzeitfehler auslösen.
    Poste vielleicht die Fehlermeldung - das kann einen auch weiter bringen.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Super, danke dir für die Erklärung.

    Ja das habe ich tatsächlich nicht gewusst mit den Parametern. Scheint mir aber sehr logisch.
    Danke für die Hinweise und Denkanstöße. Aus solchen gründen bevorzuge ich Foren anstatt
    jemanden der mir einfach sagt was ich machen soll. Und ja das mit dem Ignorieren kenne ich :)
    Und ja...bla und blubb sind nicht in ThisDocument enthalten.

    Werde mich mal dran setzen wenn die Zeit es zulässt bzw. wenn das Wetter mal schlechter wird (was ich nicht hoffe).


    Thx und Gruß

    sourceone