Holla, irgendwie komme ich mir dumm vor... aber ich finde die Arduino-Doku hier nicht eindeutig. https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/toint/ Bei ToInt() heißt es: Description: Converts a valid String to an integer. Da heißt es aber auch: Returns If no valid conversion could be performed because the String doesn’t start with a integer number, a zero is returned. Data type: long. Was denn jetzt? Kommt da ein Integer raus oder ein Long? Oder ist das einfach die Arduino-Version von strtol()?
Auf der Seite steht aber auch Returns If no valid conversion could be performed because the String doesn’t start with a integer number, a zero is returned. Data type: long.
fragender schrieb: > Kommt da ein Integer raus oder ein Long? Du meinst "int" oder "long", denn beides sind Integer. Und die Antwort hast Du zitiert: Was ist an "Data type: long" denn nicht zu verstehen?
Richtig, auf der Seite steht auch: Returns If no valid conversion could be performed because the String doesn’t start with a integer number, a zero is returned. Data type: long. Euer Klaus
Ein Blick in den öffentlichen Sourcecode hilft sofort: https://github.com/arduino/ArduinoCore-API/blob/master/api/String.h Da steht
1 | long toInt(void) const; |
Yalu X. schrieb: > Auch long ist ein Integer-Typ. Und auf Arduino-Plattformen mit 32-Bit Integern sind long und int sogar das selbe. Oliver
fragender schrieb: > ... number, a zero is returned. Data type: long. ^ Lies den Satz mit allen Satzzeichen! Es ist am Schluss noch genau eine Aussage da: Data type: long.
HildeK schrieb: > Lies den Satz mit allen Satzzeichen! Eigentlich reicht es, das im Original zu sehen. Da sollten keine Fragen mehr offen bleiben. Oliver
df2ds schrieb: > Ein Blick in den öffentlichen Sourcecode hilft sofort: > > https://github.com/arduino/ArduinoCore-API/blob/master/api/String.h > > Da steht >
1 | long toInt(void) const; |
Ich frage mich auch immer wieder, warum man sich bei solchen Fragen so schwer tut, wo doch ein Blick in den Quellcode jeden Zweifel entfernt. Ist das bei solchen Fragen einfach zu naheliegend?
M. K. schrieb: > Ich frage mich auch immer wieder, warum man sich bei solchen Fragen so > schwer tut, wo doch ein Blick in den Quellcode jeden Zweifel entfernt. Tja, unzureichende Dokumentation. Ist bei Arduino durch die Bank der Fall. Man bekommt den Eindruck, die Verfasser der Doku haben sich alle erdenkliche Mühe gegeben, jedwede konkrete Aussage aus der Doku zu entfernen, damit der übliche Arduidiot nicht mit Fakten überfordert wird, sondern ahnungslos weiter bastelt bis es halt für ihn irgendwann nicht mehr weiter geht.
MaWin schrieb: > Tja, unzureichende Dokumentation. Schwachkopf! In der Doku steht eindeutig long. Selbst du müsstest das lesen können. Das Problem fängt halt da an, wenn man nicht weiß, dass auch long, unsigned, byte uvw. zu den Integer zählen.
EAF schrieb: > Das Problem fängt halt da an, wenn man nicht weiß, dass auch long, > unsigned, byte uvw. zu den Integer zählen. Oder da, wo man noch nicht mal schnell den Funktionskopf anschauen kann, bevor man eine Funktion aufruft und man sich unsicher über den Rückgabetyp ist. Das passiert wenn man sein Gehirn dankbar abgegeben hat um es bloß nicht benutzen zu müssen und sich bereitwillig in eine völlige Abhängigkeit von ein paar Funktionen begibt, die man nicht versteht. Aber schlimmer, man versteht nicht mal das System in welchem diese Funktionen existieren. Man entwickelt in ewiger Dunkelheit.
:
Bearbeitet durch User
Cyblord -. schrieb: > Oder da, wo man noch nicht mal schnell den Funktionskopf anschauen kann, > bevor man eine Funktion aufruft und man sich unsicher über den > Rückgabetyp ist. Um den Quellcode zu verstehen, sollte man eins der vielen schönen dicken(1000+ Seiten) C++ Bücher gelesen haben. Da muss wohl jeder Arduino Anfänger irgendwann mal durch, wenn er/sie/es erfolgreich sein will. Merke: Auch du bist nicht mit dem Wissen geboren worden.
fragender schrieb: > Bei ToInt() wo gibt es das? Arduino schreibt: toInt() mit kleinem t großem I (Case sensitiv beachten) https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/toint/ im gcc wird atoi genutzt also frage ich mich ist "ToInt()" eine neue Sub oder nur Schlamperei in der Fragestellung?
EAF schrieb: > In der Doku steht eindeutig long. > Selbst du müsstest das lesen können. Da der TO aber eine Nachfrage hatte, weil es ihm unklar war, zeigt, dass die Doku unzureichend war. Und sie ist es an vielen anderen Stellen ebenso. Kaum irgendwo geht man auf die von den Funktionen benutzten Ressourcen ein (wie Timer), nirgends ist dokumentiert dass LOW 0 und HIGH 1 ist, oder dass digitalWrite eben 0/1, LOW/HIGH, false/true akzeptiert. Für jede Kleinigkeit muss man in den Source gucken. Da hätte man die Arduino-Funktionen gleich selbst besser schreiben können.
MaWin schrieb: > unzureichend Das gesamte Arduino Geraffel liegt im Quellcode vor. Alles ist änderbar, auch die Doku und die IDE Niemand hindert dich daran, deine Verbesserungen dort einzubringen. Fragen: Tust du das? Willst du das überhaupt? An der Antwort auf die Fragen macht sich fest, ob du konstruktiv handelst/denkst, oder nur ein elendiger/nerviger Arduino Basher bist. Es ist deine Entscheidung.
MaWin schrieb: > Da der TO aber eine Nachfrage hatte, weil es ihm unklar war, zeigt, dass > die Doku unzureichend war. Nein, in dem Fall saß das Problem mal wieder vor dem Computer. Die Doku ist da glasklar. Man muß sie nur bis zum Ende der wenigen Zeilen lesen. Oliver
fragender schrieb: > irgendwie komme ich mir dumm vor... Das habe ich nicht geschrieben. Also: die betreffende Funktion erwartet eine Zeichenkette, die den Bedingungen für Integer genügt. Also kein Dezimalpunkt/Komma, auch keine Darstellung in der Art von 1E9 oder so. Ansonsten liefert sie offenbar ein Ergebnis als 'long' und das heißt: JA, es kommt Integer und Long dabei heraus. Du bist ja in der C-Welt und da ist 'long' nur ein Qalifizierer für Integer. Genau so wie andere Qualifizierer, die es da gibt: short, unsigned oder so. W.S.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.