Merkwürdiger Fehler beim Übergeben an eine Funktion

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von picoflop.

    Merkwürdiger Fehler beim Übergeben an eine Funktion

    So ikk nochma!

    Ich habe einen merkwürigen Fehler und komme einfach nich dahinter, was falsch sein könnte. Ich habe ja eine ListBox, an dessen Einträge ObjectClass hängt um mehrere Informationen zu einem Item zu speichern.
    Jetzt rufe ich eine Funktion auf, an die bestimmte Parameter wie aktuell gewähltes Item, Formatierungs String, ItemIndex und eine Anzahl von stellen gesendet wird. Hierbei kommt es zu folgendem Fehler:



    Die Funktion selber sieht so aus:

    VB.NET-Quellcode

    1. Public Function SetFilename(ByVal sFilename As String, ByVal sFormatString As String, Optional ByVal iCounter As Integer = -1, Optional ByVal iCounterPlace As Integer = 1) As String
    2. ' Code rausgelassen, weil irrelevant
    3. End Function


    Der Error tritt ja bei iCounter As Integer auf, wenn ich beim Debug über lstFiles.SelectedIndex mit der Maus gehe, wird mir auch der richtige Index angezeigt und ich wandle ihn nochmal mit CInt() um. Trotzdem wird bei der Fehlermeldung gesagt, ungültige Konvertierung von clsFileList (das ist meine Klasse die an die Items gehängt wird) zu String.

    Hier die Klasse:

    VB.NET-Quellcode

    1. Public Class clsFileList
    2. Public Listname As String
    3. Public Filename As String
    4. Public FileExtention As String
    5. Public FilePath As String
    6. Public Overrides Function ToString() As String
    7. Return Me.Listname
    8. End Function
    9. End Class


    Edit: Hat sich erledigt, war ein Denkfehler von mir. SelectedItem erwartet ja ein Object von clsFileList und meine Funktion gibt ein String zurück. Darin lag der Fehler, aber blöde das der Pointer der Fehlerbox auf den lstFiles.SelectedIndex deutet -.- das hat mich total verwirrt.
    Kann gelöscht oder geschlossen werden!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dodo“ ()

    "SelectedItem" dürfte ja wohl vom Typ deiner Klasse sein oder? Deine Funk erwartet aber String.
    Also musst du "CType(SelectedItem, DeineKlasse).Filename" verwenden. Alternativ halt die "ToString" Methode deiner Klasse.

    PS: Dass die Fehlermeldung am CInt() "hängt" hat optische und nicht sachliche Gründe ;)