Strings können nicht verglichen werden

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Xy8000.

    Strings können nicht verglichen werden

    Hallo,
    Ich hänge nun an einem Problem, dass ich schon seid Stunden zu lösen versuche. Doch da es so simpel ist verstehe ich nicht wo der Fehler liegt.
    In meinem Code versuche ich zwei Strings zu vergleichen. Dabei soll überprüft werden ob jene gleich sind.

    Mein Code:

    VB.NET-Quellcode

    1. ​Public Function macVaild(pMac As String) As Boolean
    2. Dim foundMac As Boolean = False
    3. For Each x As user In mySettings.user
    4. If x.mac = (pMac) Then 'x.max.equals(pMac) => gleiches result
    5. foundMac = True
    6. End If
    7. Next
    8. Return foundMac
    9. End Function


    Infos zum Code:
    pMac ist der String (Eine MAC-Adresse in einen String umgewandelt)
    x.mac ist eine MAC-Adresse eines PCs als String

    Sind nun pMac und x.mac ( laut Debugger ) gleich liefert die Methode trotzdem false. ?(
    Setze ich im Debugging pMac und und x.mac auf einen anderen wert liefert sie true.
    Habt ihr eine Idee ? Auch im Internet konnte ich leider nichts derartiges finden.

    Danke schon mal im Voraus.
    "Das Internet ist nur ein Hype" - Bill Gates
    @Xy8000 Sieh Dir die Strings an, die Du vergleichst. Setz nen Haltepunkt drauf, zieh beide Variablen in das Überwachen-Fenster des Studios und sieh Dir an, was los ist.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Was soll die Methode denn machen? True zurückgeben wenn eine der Adressen mit der Eingegebenen übereinstimmt oder muss er mit allen übereinstimmen? Ich denk mal Ersteres. Demnach sofort nach der ersten Übereinstimmung return true. Ists überhaupt sinnvoll so eine Adresse zu String zu casten?

    RodFromGermany schrieb:

    @Xy8000 Sieh Dir die Strings an, die Du vergleichst. Setz nen Haltepunkt drauf, zieh beide Variablen in das Überwachen-Fenster des Studios und sieh Dir an, was los ist.



    Habe ich gemacht sind Identisch.

    [Edit]
    Fehler gefunden. Durch eine falsche länge des BufferSize waren nach dem String (durch den Debugger nicht sichtbar) nullen angehängt.
    "Das Internet ist nur ein Hype" - Bill Gates

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Xy8000“ ()

    @Xy8000 Dann mach vor dem Vergleich mit beiden Operanden ein .Trim(), da wird solch weggeschnitten.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Vollzitat entfernt. ~Trade

    Doch diese Vorgehensweise ist von Nöten.Dies ist hier aber nicht relevant.

    Problem ist ja eh schon gelöst
    "Das Internet ist nur ein Hype" - Bill Gates

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

    Xy8000 schrieb:

    Doch diese Vorgehensweise ist von Nöten.Dies ist hier aber nicht relevant.
    Sorry: Auch wenn's für dich schon erledigt ist. Du könntest dann gleich den letzten user-Eintrag zum Vergleich hernehmen...

    VB.NET-Quellcode

    1. foundMac = (mySettings.user.LastOrDefault = pMac)
    @VB1963
    Ich sehe es anders. Er prüft doch, ob irgendein Eintrag übereinstimmt, nur dann wird True zurückgegeben.

    Eigentlich entspricht es:

    VB.NET-Quellcode

    1. Public Function macVaild(pMac As String) As Boolean
    2. Return mySettings.user.ToList.Any(Function(x) x.mac=pMac)
    3. End Function


    @Xy8000
    Wenn du es verwenden willst, musst du ganz oben Imports System.Linq hinzufügen.
    Vollzitat entfernt. ~Trade

    Genau so ist es. Ich will mir aber die Option frei halten die Methode nach bleiben zu ändern. Dieses Thema kann aber geschlossen werden.
    "Das Internet ist nur ein Hype" - Bill Gates

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