Forum: Compiler & IDEs C++ Telegram Endlos Abfrage bitte um Hilfe


von 706231 1. (706231_1)


Lesenswert?

Servus , wer kann mir helfen den Code zu verstehen, 
while(numNewMessages)

Telegram Bot Endlosschleife !

void loop() {
  if (millis() > lastTimeBotRan + botRequestDelay)  {
    int numNewMessages = bot.getUpdates(bot.last_message_received + 1);

    while(numNewMessages) {
      Serial.println("got response");
      handleNewMessages(numNewMessages);
      numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    }
    lastTimeBotRan = millis();
  }


Danke

: Verschoben durch Moderator
von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

706231 1. schrieb:
> wer kann mir helfen den Code zu verstehen,
> while(numNewMessages)

https://en.cppreference.com/w/cpp/language/while

von Parser (Gast)


Lesenswert?

706231 1. schrieb:
> Telegram Bot Endlosschleife !

Das ist ein Syntax Fehler.

von Franz M. (elmo64)


Lesenswert?

706231 1. schrieb:
> Servus , wer kann mir helfen den Code zu verstehen,
1
//Irgendeine Funktion mit dem namen "loop" ohne Parameter oder Rückgabewert
2
void loop() 
3
{ 
4
  if (millis() > lastTimeBotRan + botRequestDelay) 
5
//Falls der Rückgabewert der Funktion millis() größer als die Summe der Variablen "lastTimeBotRan" und "botRequestDelay" ist, führe aus: 
6
  { 
7
    int numNewMessages = bot.getUpdates(bot.last_message_received + 1);  
8
//Deklaration einer neuen, lokalen Variable mit dem Namen "numNewMessages" vom Typ "int"
9
//Aufrufen der Funktion "getUpdates" aus der Klasse "bot", mit dem um 1 inkrementierten Wert der Variablen "last_message_received" aus der Klasse "bot", als Parameter
10
//Initialisieren von "numNewMessages" mit dem Rückgabewert.
11
    while(numNewMessages) 
12
//Führe aus, solange "numNewMessages" größer als 0 ist:
13
    {
14
        Serial.println("got response");
15
//Rufe die Funktion "println" aus der Klasse "serial" mit dem string "got response" auf => vmtl. Ausgabe desselben auf eine serielle Schnittstelle    
16
        handleNewMessages(numNewMessages);
17
//Aufrufen der Funktion "handleNewMessages" mit dem Wert der Variablen "numNewMessages"
18
        numNewMessages = bot.getUpdates(bot.last_message_received + 1);
19
//siehe oben   
20
    }//while ende
21
    lastTimeBotRan = millis();
22
//Zuweisen des Rückgabewertes von milis() an eine Variable "lastTimeBotRan"
23
  }//if ende
24
// syntax error

: Bearbeitet durch User
von PittyJ (Gast)


Lesenswert?

Die Kommentare sollten eigentlich schon in dem Originalcode stehen.
Warum schreiben so viele Leute ihren Code ohne Kommentare?

von Oliver S. (oliverso)


Lesenswert?

PittyJ schrieb:
> Die Kommentare sollten eigentlich schon in dem Originalcode
> stehen.
> Warum schreiben so viele Leute ihren Code ohne Kommentare?

Weil Kommentare dieser Art völlig sinnlos sind.

Oliver

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

PittyJ schrieb:
> Die Kommentare sollten eigentlich schon in dem Originalcode stehen.
> Warum schreiben so viele Leute ihren Code ohne Kommentare?

Weil der Code mit etwas Übung sehr einfach zu lesen ist. Wenn im 
Kommentar das Selbe steht, wie im Code dann fügt er (der Kommentar) 
keinen Nutzen hinzu. Im Gegenteil: der Leser muss ständig den Kommentar 
mit dem Code abgleichen.

von Axel R. (axlr)


Lesenswert?

Oliver S. schrieb:
> PittyJ schrieb:
>> Die Kommentare sollten eigentlich schon in dem Originalcode
>> stehen.
>> Warum schreiben so viele Leute ihren Code ohne Kommentare?
>
> Weil Kommentare dieser Art völlig sinnlos sind.
>
> Oliver

Ach?
Wir haben den Satirischen Ansatz vom Franz M. erkannt?

von Nasenbaer (Gast)


Lesenswert?

Franz M. hat alles richtig gemacht! Gut beschrieben was passiert!
Der OP wollte die Zeieln erklärt haben, das hat @elmo64 perfekt getan!
👍
Einen guten Wochenstart euch allen!

von Experte (Gast)


Lesenswert?

Nasenbaer schrieb:
> Der OP wollte die Zeieln erklärt haben, das hat @elmo64 perfekt getan!

Nein.

 - Er verwechselt Deklaration mit Definition.
 - Er verwechselt Klasse und Objekt.
 - Eine Methode bezeichnet er fälschlich als Funktion.
 - Argumente bezeichnet er fälschlich als Parameter.
 - "numNewMessages" wird nicht auf größer Null getestet, sondern
   auf ungleich Null.

von Oliver S. (oliverso)


Lesenswert?

Nasenbaer schrieb:
> Der OP wollte die Zeieln erklärt haben, das hat @elmo64 perfekt getan!

Nein. Der TO wollte verstehen, was der Code macht, und das hat elmo64 
nicht erklärt. Der hat nur in zudem noch unpräziser Prosa das 
wiederholt, was da als C-Code schon steht. Wie gesagt, ist so etwas 
völlig sinnlos.

Oliver

von Rummel Rainer (Gast)


Lesenswert?

Ich liebe diese Threads

von Veit D. (devil-elec)


Lesenswert?

Hallo,

ich korrigiere noch den Logikfehler mit dem Zeitvergleich und alles ist 
in Butter. Ansonsten stimmt das bei/nach einem Überlauf nicht mehr.
1
if (millis() - lastTimeBotRan >= botRequestDelay) {
2
  int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
3
4
  while (numNewMessages) {
5
    Serial.println("got response");
6
    handleNewMessages(numNewMessages);
7
    numNewMessages = bot.getUpdates(bot.last_message_received + 1);
8
  }
9
  lastTimeBotRan = millis();
10
}

Mehr kann ich zu dem Schnipsel dazu nicht sagen.

von 706231 1. (706231_1)


Lesenswert?

Danke für die Hilfe !

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.