Problem mit String Array

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Problem mit String Array

    Hallo,

    ich habe ein Problem mit der Zeile: "if (name = "1")". "name" ist als String deklariert wegen "string name = sr.ReadLine();"
    Der Grund ist von dem empfangenen String name = *000# sollen die einzelnen Stellen (000) ausgewertet werden.
    Hier mein Code für die verwendete Funktion.

    C#-Quellcode

    1. private void endlos()
    2. {
    3. SetText("Sub Endlos gestartet.");
    4. //String[] eingang_;
    5. string[] eingang_ = new string[16] ;
    6. string[] test = new string[16];
    7. //string[] name = new string[16];
    8. Int32 port = 54345;
    9. Int32 i;
    10. IPAddress localAddr = IPAddress.Parse("192.168.1.15");
    11. listener = new TcpListener(localAddr, port);
    12. listener.Start();
    13. SetText("Server mounted, listening to port " + port );
    14. while (true)
    15. {
    16. Socket soc = listener.AcceptSocket();
    17. //soc.SetSocketOption(SocketOptionLevel.Socket,
    18. // SocketOptionName.ReceiveTimeout,10000);
    19. SetText("Connected: " + soc.RemoteEndPoint);
    20. try
    21. {
    22. Stream s = new NetworkStream(soc);
    23. StreamReader sr = new StreamReader(s);
    24. StreamWriter sw = new StreamWriter(s);
    25. sw.AutoFlush = true; // enable automatic flushing
    26. //sw.Write(sr.Read());
    27. while (true)
    28. {
    29. [color=#FF0000]string name = sr.ReadLine();[/color]
    30. //textBox1.Text = "Received: {0}" + name;
    31. SetText("Received: " + name);
    32. //sw.WriteLine(name);
    33. for (i = 1; i < name.Length - 3; i++) {
    34. [color=#FF0000]if (name[i] = "1")[/color]
    35. {
    36. eingang_[i] = "True";
    37. }
    38. else {
    39. eingang_[i] = "False";
    40. }
    41. }
    42. }
    43. s.Close();
    44. }
    45. catch (Exception e)
    46. {
    47. Console.WriteLine(e.Message);
    48. }
    49. SetText("Disconnected: " + soc.RemoteEndPoint);
    50. soc.Close();
    51. }
    52. }


    Bin dankbar für einen Hinweis.

    MfG

    Juergen B.
    Kommst du aus der VB welt?
    = ist ein Zuweisungsoperator in C-like Sprachen, niemals ein Vergleichsoperator.
    Der Vergleichsoperator ist ==
    Außerdem ist ein String quasi ein Char-Array, wenn du auf ein einzelnes Element zugreifst, dann ist das also ein Char
    und Chars sind mit einfachen Anführungszeichen ' und nicht mit doppeltem "
    abgesehen davon halte ich es nicht für Sinnvoll dein Ergebnis in ein String-Array zu speichern, viel mehr würde ich es in ein bool-Array schmeißen und erst am Ende, beim darstellen der Werte in strings umwandeln.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Hallo,
    jvbsl vielen Dank für Deinen Hinweis. Habe die Zeile " if (name == '1')" entsprechend geändert, es funktioniert nun.
    Zur VB-Welt: ja/nein: ich habe mein Beispiel zuerst in VB programmiert. Mrin Favorit ist aber C.
    Das mit dem Hinweis auf ein bool-Arrary sagt mir leider nichts, vielleicht dazu noch ein kleiner Tipp ?

    MfG

    Juergen B.
    @jbaben Glückwunsch, Du hast den Italic-Button zur Formatierung von Quellcode gefunden, beim nächsten Mal ersparst Du Dir und uns das bitte.
    String-Array: eingang_[j] = "True";
    Boolean-Array: eingang_[j] = true;
    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!