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
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
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.
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.
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.