Am besten immer 1 hochzählen?

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

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von tim14996.

    Am besten immer 1 hochzählen?

    Guten Tag liebe Community.
    Ich hätte eine kleine Frage bzw. ein kleines Problem.

    Ich möchte falls in der RichTextBox immer 1 hochgezählt wird.
    Das Problem ist nun, wenn ich dort von dem Client aus was schreibe (logged in with enity id) wird zwar 1 hochgezählt, aber wenn ich weiterhin z.B aasd oder sonstiges schreibe, zählt er immer noch immer eins hoch.

    Wieso? Ist mein Code falsch?
    Code:
    Spoiler anzeigen

    C#-Quellcode

    1. private void LogWriter_TextChanged_2(object sender, EventArgs e)
    2. {
    3. LogWriter.SelectionStart = LogWriter.Text.Length; //Set the current caret position at the end
    4. LogWriter.ScrollToCaret(); //Now scroll it automatically
    5. this.Write();
    6. }
    7. //Write funktion
    8. private void Write()
    9. {
    10. if (LogWriter.Text.Contains("logged in with entity id"))
    11. {
    12. currentUser += 1;
    13. PlayerCount();
    14. }
    15. else if (LogWriter.Text.Contains("lost connection")) {
    16. currentUser -= 1;
    17. PlayerCount();
    18. }
    19. }
    20. private void PlayerCount()
    21. {
    22. lbl_player.Text = "Spieler: " + currentUser + " von " + LimitedUsers;
    23. }


    Danke nochmal im Voraus!
    MfG.

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

    Hallo,
    wahrscheinlich weil

    C#-Quellcode

    1. LogWriter.Text.Contains("logged in with entity id")
    wahr ist, da ich annehme das dein Logwriter "logged in with entity id" enthält. Ich weiß ja nicht ob immer nur ein Log gespeichert wird oder was ich mal vermute der nächste Log immer anghängt wird. Also das nach dem Senden von "logged in with entity id" nur folgendes in deinem LogWriter steht:

    Quellcode

    1. logged in with entity id

    Wenn du dann noch "aasd" oder was auch immer sendest, wird wahrscheinlich folgendes da stehen:

    Quellcode

    1. logged in with entity id
    2. assd


    Was steht den in LogWriter.Text?

    Tim

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

    JazzerDEV schrieb:

    Ich möchte falls in der RichTextBox immer 1 hochgezählt wird.
    Es wäre gut, wenn Du mal Dein gesamtes Problem beschreiben könntest, so, dass wir auch das versteen, was Du meinst. :/
    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!

    RodFromGermany schrieb:

    JazzerDEV schrieb:

    Ich möchte falls in der RichTextBox immer 1 hochgezählt wird.
    Es wäre gut, wenn Du mal Dein gesamtes Problem beschreiben könntest, so, dass wir auch das versteen, was Du meinst. :/

    Tut mir leid, falls ich es nicht richtig verbal ausdrücken konnte. Mein Problem ist nur, wenn z.B in meiner RichTextBox "logged [...]" steht, sollte er beim Label immer eins hochzählen.
    Mein Problem ist es, wenn ich z.B ingame im Chat "logged [...]" schreibe, zählt er eins hoch. Wenn ich dann irgendwas in den Chat oder etwas in eine TextBox reinschreibe (Die in die RichTextbox schreibt), zählt er dann ständig auch immer 1 hoch.

    MfG.
    @tim14996 hats doch schon beantwortet: In deine TB schreibst du den Text "logged in" rein. Du prüfst ob es drin ist - ja - counter inkrementieren. Jetzt schreibst du "alpha beta gamma" rein, Prüfung - ja, da die erste Zeile ja auch in der TextProperty drinnen ist - counter inkrementieren usw.
    Also darfst du in der Write Methode nur alle Zeichen bis zum letzten \r\n oder so
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Ich vermute du hast den Counter an die Eingehende verbindung gebunden, wenn nun die Verbindung eines Clienten beendet ist und bei jedem senden einer nachricht wieder aufgebaut wird, wird logischerweise der Counter erhöht. Zeig mal deine Server Funktionen bitte.

    Grüße Andy
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    Es ist genau so, wie tim14996 gesagt hat.

    Deine Abfrage:

    C#-Quellcode

    1. if (LogWriter.Text.Contains("logged in with entity id"))

    ...prüft jedes mal ob in der Richtextbox obiger Text steht, und das tut er ja, also wird er auch ins unendliche hochzählen.

    Die Login-Vorgänge musst du anders zählen, in einem anderen Event, zeig doch mal den Rest von deinem Code, zum Beispiel wenn ein Client connected.

    Gruß
    Am besten ist es wie OMA gesagt das direkt beim connecten oder disconnecten zu zälhlen. Alternativ wäre noch folgende Möglichkeit (hab ich nicht ausprobiert,da ich es nur konvertiert hab, da ich eingendlich in VB und nicht C# code)

    EDIT: Code entfernt, da ich eingesehen hab das er einfach nur schrott ist :P

    Tim

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

    @RodFromGermany Also ist es keine schöne Methode das Porblem zu lösen. Ich hat ja auch erwänt das es sinnvoller ist direkt die Verbindungen zu zählen oder beim Verbinnden und Trennen zu zählen. Aber man kann auch einfach im LogWriter.Text zählen wie oft jemand Verbunden wurde und darvon abziehen wie oft eine Verbindung getrennt wurde. Dann hat man die aktuellen verbindungen.

    Oder was verstehst du nicht?

    tim14996 schrieb:

    ... Aber man kann auch einfach im LogWriter.Text zählen wie oft jemand Verbunden wurde und darvon abziehen wie oft eine Verbindung getrennt wurde. Dann hat man die aktuellen verbindungen.

    Oder was verstehst du nicht?


    Hör doch auf mit so was. :O
    Das ist nicht nur eine "unschöne Methode", das ist größter Pfusch ever.
    Vorallem, wieso sollte man einen Integer Wert durch Strings bestimmen. :S Da wird mir ja schlecht...
    Ganz schnell Strict on machen.

    Der Playercount muss ganz anders gezählt werden, dafür hat doch .NET tausende Events und wenn kein passendes dabei ist, dann provoziert man halt eins....

    So long

    OMA schrieb:


    Vorallem, wieso sollte man einen Integer Wert durch Strings bestimmen. :S Da wird mir ja schlecht...
    Ganz schnell Strict on machen.


    Naja ich hab eigesehen das ist schwachsinnig ist es so zu machen und hab auch den Code entfernt damit keine auf blöde Ideen kommt :P Trozdem gab es da kein Strict On Konflikt, da ich ja ich einem Integer kein String zugewisen hab, sonden die Anzähl der Elemente eines String-Arrays (String().Count --> Integer) :P

    Naja wie gesagt:
    @JazzerDEV Poste lieber mal den restlichen Code, damit wir nen geignetes Event finden können, wo man die Connections sinnvoll zählen kann.

    Tim