Strings in If vergleichen geht nicht.

  • VB.NET
  • .NET (FX) 4.0

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Strings in If vergleichen geht nicht.

    Hi, ich bin etwas ratlos was mein problem angeht. Ich habe 2 Strings und die möchte ich über einen in clause vergleichen. An sich keine schwere sache (If String1 = "hallo" Then etc.) aber bei mir geht es trotzdem nicht.
    Ich will nur eine bestimmte ausgabe aus einem Socket stream zeigen. Hier mein code

    die print sub:

    VB.NET-Quellcode

    1. Sub msg(ByVal mesg As String)
    2. If Not mesg = "null" Then
    3. TextBox1.Text = TextBox1.Text + Environment.NewLine + " >> " + mesg
    4. End If
    5. End Sub


    Der socket teil:

    VB.NET-Quellcode

    1. Dim clientSocket As New System.Net.Sockets.TcpClient()
    2. clientSocket.Connect("localhost", 8081)
    3. Dim serverStream As NetworkStream = clientSocket.GetStream()
    4. Dim inStream(10024) As Byte
    5. serverStream.Read(inStream, 0, CInt(clientSocket.ReceiveBufferSize))
    6. Dim returndata As String = _
    7. System.Text.Encoding.ASCII.GetString(inStream)
    8. serverStream.Close()
    9. clientSocket.Close()
    10. msg(returndata)


    Wenn ich einfach msg("null") mache funktioniert auch alles, aber mit dem returndata string nicht.

    VB-Tags eingefügt. ~Thunderbolt

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

    1. Bitte VB-Tags nutzen
    2.

    VB.NET-Quellcode

    1. Sub msg(ByVal mesg As String)
    2. If Not String.IsNullOrEmpty(mesg) Then TextBox1.Text &= Environment.NewLine & " >> " & mesg
    3. End Sub
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Moin,

    wie äußert sich denn geht nicht?
    Meine Vermutung wären Kompilierfehler, da ​msg keine bekannte Funktion ist, ​returndata falsch geschrieben ist (man braucht da ein Leerzeichen) und vor allem kann man das nicht direkt so angeben, oder?
    Dann hättest Du ja auch keine Rückgabe.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Der String ist nicht emty. er trägt den inhalt "null" in sich und nicht das Null aus .net. Der string wird einfach angezeigt obwohl er herausgefiltert werden sollte. Es gibt keine Kompiler fehler.
    und returndata soll nur ein normaler string sein. die methode sollte void sein also kein rückgabewert.

    Zetatron schrieb:

    Der String ist nicht emty
    und Dein Code ist nicht lesbar.
    Wenn Dui möchtest, dass Dir geholfen wird, formatiere Deinen Code bitte so, dass er als Code lesbar ist.
    Bilder
    • Code.png

      3,87 kB, 404×38, 112 mal angesehen
    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!
    Sicher das der String "null" und nicht "Null" oder " null" oder "null "? Du könntest mit .tolower und .trim arbeiten
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    VB.NET-Quellcode

    1. ​Sub msg(ByVal mesg As String)
    2. If Not mesg = "null" Then
    3. TextBox1.Text = TextBox1.Text + Environment.NewLine + " >> " + mesg
    4. End If
    5. End Sub
    6. Private timeLeft As Integer
    7. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    8. If timeLeft > 0 Then
    9. timeLeft -= 1
    10. Else
    11. Try
    12. Dim clientSocket As New System.Net.Sockets.TcpClient()
    13. clientSocket.Connect("localhost", 8081)
    14. Dim serverStream As NetworkStream = clientSocket.GetStream()
    15. Dim inStream(10024) As Byte
    16. serverStream.Read(inStream, 0, CInt(clientSocket.ReceiveBufferSize))
    17. Dim returndata_ As String = _
    18. System.Text.Encoding.ASCII.GetString(inStream)
    19. serverStream.Close()
    20. clientSocket.Close()
    21. msg(returndata_)
    22. Catch ex As Exception
    23. End Try
    24. timeLeft = 30
    25. End If
    26. End Sub

    Zetatron schrieb:

    mein problem
    Offensichtlich hast Du 2 Probleme.
    1. Das Vergleichen von Strings
    2. Die Datenübertragung per Socket.
    Trenne beide Probleme fein säuberlich voneinander und dann schreibe auf, was genau Dein eigentliches Problem 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!
    Der string der ankommt kann ja ausgegeben werden! Es ist ein ganz normaler string. wenn ich vom server hallo sende wird auch hallo angezeigt. Was soll es denn sonst sein wenn es kein String ist? Es ist als String deklariert und müsste auch so funktionieren. Aber wieso es gerade das nicht tut weis ich nicht.
    Wieso verschluckst Du denn absichtlich die Exceptions?

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Zetatron Hast du mal im Debugging nachgeschaut was WIRKLICH in dem String "null" steht? Vieleicht mal die Zeichen gezählt? Vielleicht kommt da noch ein Lf oder sonst ein unsichtbares Sonderzeichen.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Zetatron schrieb:

    Was soll es denn sonst sein wenn es kein String ist?
    Gugst Du hier.
    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!
    @Eierlein Brav, schön Post 6 wiederholt. Hast du fein gemacht.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Ich will es noch mal Ausfürlicher beschreiben. Und anstatt nur auf eine Anleitung zum Debuggen zu verweisen, könnte ich auch ernst gemeinte Hilfe benötigen.
    Ich habe eine Methode msg die einen String anfordert. Diese Methode überprüft ob der String Inhalt "null" oder nicht "null" ist. Wenn ich die msg Methode folgendermaßen aufrufe: msg("null") wird der String auch heraugefiltert. Nun habe ich in dem Socket Teil den String returndata der den Input Bytestream in eine ASCII codierung übernimmt. nun rufe ich die methode msg(returndata (der input string)) auf. Aber der String der mit dem "null" von vorhin identisch ist wird hindurchgelassen. Wenn ich Debug.WriteLine(returndata) mache kommt auch nur null raus. Ohne Leerzeichen, sonderzeichen, \n oder \r. Wieso? Das ist meine Frage. Und wie kann ich es schaffen die "null" nicht auszugeben.