"Option Strict On" lässt spätes Binden nicht zu in einem einfachen Array

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    "Option Strict On" lässt spätes Binden nicht zu in einem einfachen Array

    Tach auch, bekomme die Fehlermeldung an dieser stelle:



    Bei Option Strict On bekomme ich die Fehlermeldung, bei Option Strict Off läuft es wie gewünscht.

    Was mache ich denn nun wieder falsch? ;(

    hier der ganze Code

    VB.NET-Quellcode

    1. Private Sub SubUserFilter()
    2. Dim strFilter As String
    3. Dim arrSpilt As Array ' in MS Access war hier "variant"
    4. Dim strFeld As String = ""
    5. Dim strText As String = ""
    6. If Len(txtProjektname.Text) > 0 Then
    7. strText = "Projektname like '%" & txtProjektname.Text & "%'" & "|" & strText
    8. End If
    9. If Len(txtEndkunde.Text) > 0 Then
    10. strText = "Endkunde like '%" & txtEndkunde.Text & "%'" & "|" & strText
    11. End If
    12. If Len(txtEinsatzort.Text) > 0 Then
    13. strText = "Einsatzort like '%" & txtEinsatzort.Text & "%'" & "|" & strText
    14. End If
    15. If Len(txtProjektverantwortlich.Text) > 0 Then
    16. strText = "Projektverantwortlich like '%" & txtProjektverantwortlich.Text & "%'" & "|" & strText
    17. End If
    18. If Len(txtBL.Text) > 0 Then
    19. strText = "BL like '%" & txtBL.Text & "%'" & "|" & strText
    20. End If
    21. If Len(txtKunde.Text) > 0 Then
    22. strText = "Kunde like '%" & txtKunde.Text & "%'" & "|" & strText
    23. End If
    24. arrSpilt = Split(strText, "|")
    25. For index = 0 To arrSpilt.GetUpperBound(0)
    26. strFeld = strFeld & arrSpilt(index) & " and "
    27. Next
    28. If Len(strFeld) > 1 Then
    29. strFilter = Replace(strFeld, "and and", "")
    30. TextBox1.Text = strFilter ' Testbox, damit ich das Ergebnis sehen kann. Löschen wenn Entwicklung beendet ist.
    31. VwwiedervorlageBindingSource.Filter = strFilter
    32. Else
    33. VwwiedervorlageBindingSource.Filter = Nothing
    34. End If
    35. txtCount.Text = VwwiedervorlageBindingSource.Position() + 1 & " von " & VwwiedervorlageBindingSource.Count()
    36. VwwiedervorlageBindingSource.Sort = "AuftragsNr"
    37. End Sub
    Mit freundlichen Dinges

    Lupus
    P.S: bei allen meine Fragen beziehen sich auf das arbeiten mit Visual Studio 2019 auf Win 10/64 bit und MySQL
    Argh, meine Augen bluten, ich sehe nur noch VB6.
    Ok, Übertreibung beiseite. Bitte streich den Typ Array aus Deinem Gedächtnis. Du weißt, dass das nur Strings reinkommen, also mach einfach ein StringArray draus und gut ist. Dim arrSpilt As String().
    Und danach kannste die ganzen VB6-Anachronismen durch die VB.NET-Varianten ersetzen, siehe hier: Böses aus VB6 und passende Alternativen

    btw: Wofür steht eigentlich Spilt in arrSpilt?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    wow, endlich mal eine Lösung die nicht nur einleuchtenden ist, sondern auch ganz einfach um zu setzen.
    Supi, vielen Dank.

    VaporiZed schrieb:

    btw: Wofür steht eigentlich Spilt in arrSpilt?

    Damit der Code weiß wo der Trenner für die einzelnen Texte stehen und wie er heißt.

    Gibt es da eine besserer kürzerer Alternative?

    VaporiZed schrieb:

    Und danach kannste die ganzen VB6-Anachronismen durch die VB.NET-Varianten ersetzen, siehe hier: Böses aus VB6 und passende Alternativen?


    Ich versuche es, aber gefühlte 100 Jahre VBA mit MS Access hinterlassen Spuren :)
    Mit freundlichen Dinges

    Lupus
    P.S: bei allen meine Fragen beziehen sich auf das arbeiten mit Visual Studio 2019 auf Win 10/64 bit und MySQL

    Lupusverlach schrieb:

    Gibt es da eine besserer kürzerer Alternative?
    ja, viel besser.
    Das Tut gegen das Böse wurde dir ja schon gegeben.
    Auch gegeben wurde dir schon: Visual Studio - Empfohlene Einstellungen
    Bei Strict On bist du schon angekommen, aber hängst noch voll inne MVB-Namespace-Grütze.
    Daher kommt, dass du bei Strings.Split() (vb6) landest, statt bei String.Split() (.net)
    Also nochmal nachlesen, wie man den MVB-Quack loswird.

    Lupusverlach schrieb:

    btw: Wofür steht eigentlich Spilt in arrSpilt?
    Damit der Code weiß wo der Trenner für die einzelnen Texte stehen und wie er heißt.
    Um ehrlich zu sein: War von mir ne rhetorische Frage, um Dich darauf hinzuweisen, dass Du Dich verschrieben hast. Du nennst das Teil arrSpilt, wolltest aber arrSplit schreiben ;)
    Sobald Du in den Projekteigenschaften beim Punkt Verweise -> Importierte Namespaces den Microsoft.VisualBasic-Namespace rausnimmst, weist Dich Visual Studio umgehend darauf hin, wofür Du Dir .NET-Funktionsalternativen suchen musst.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.