Go Down

Topic: dataString=now(); werkt niet meer in Arduino>1. (Read 2026 times) previous topic - next topic

Bernard47

Sinds ik Arduino 1.0 gebruik werkt het volgende niet meer bij mij:

String dataString()="";
...
dataString=now();


Ik krijg als foutmelding:
invalid conversion from 'int' to 'const char*'

Maar de Stringfunctie kan toch iedere conversie aan? In Arduino 23 werkte het prima.
Ik kan in de release notes niets vinden.
Wat is er aan de hand?
Met vriendelijke groet,
Bernard

robtillaart

een interface change.

Lees de release notes van 1.0.0 - 1.0.3 om de details te zien.

Verder is het (imho) in strong typed languages niet verstandig om impliciete conversies te doen.
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Bernard47

Beste Rob,
dank voor je antwoord. Ik heb de release notes nogmaals doogespit, maar kan niets vinden dat met String te maken heeft.
Wat bedoel je met "interface change"?
Wat betekent imho?
En ik weet ook niet wat een strong typed languages is.
Dus, misschien kun je mij verder op weg helpen?
Met vriendelijke groet,

MAS3


Beste Rob,
Wat betekent imho?


Dat is een afkorting die veelvuldig op het internet word gebezigd.

Imho = "In My Humble Opinion" oftewel "naar mijn bescheiden mening".

Hij past in het rijtje van LOL en LMAO.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Bernard47

OK, maar nu de conversie nog. Heb je daar nog een antwoord op?

robtillaart


Een interface change betekent dat de manier waarop je een bepaalde classe in een programmeertaal gebruikt veranderd is. Dit is vaak een uitbreiding van mogelijkheden maar soms werkt oude code niet meer.


Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

robtillaart

Quote
En ik weet ook niet wat een strong typed languages is.

Een string typed language is een programmeertaal waarbij je van elke variabele het type kent en waarbij assignments (toekenningen) tussen verschillende datatypes aan strenge regels gebonden zijn.

een integerkun je in zo'n taal aan een long toekennen zonder dat er verlies van precisie optreedt. Van een long naar een integer toe past niet altijd en kan er verlies van gegevens optreden.

Toekenningen tussen types integer en string of tussen DateTime en string kunnen zelden impliciet en moeten expliciet gemaakt worden. BIjvoorbeeld

DateTime now = DateTime.Time();
String s = now.toString();

LET OP dit is geen arduino C++ ;)

Meer over typed programmeertalen => wikipedia


Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

robtillaart


Kun je je hele programma posten, dan kan ik kijken waar het probleem zit. 2 regels is te summier om serieus te debuggen.
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Bernard47

Dat ga ik eens proberen.
met
Code: [Select]
gaat het niet; te lang programma.
Kan ik het niet als bijlage meesturen?

Bernard47

Maar als het niet verstandig is de conversie op mijn manier te doen, wat is dan de juiste manier op de datum now() als tekst op te slaan op een SD kaart?

Bernard47

Ik heb het als volgt opgelost:
dataString=String(now());

Is dit een nette conversie, Rob?

Jantje


Ik heb het als volgt opgelost:
dataString=String(now());

Is dit een nette conversie, Rob?

Ja
Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

robtillaart

Helemaal prima.
Nu is de conversie expliciet gemaakt. Als de string class deze conversie niet ondersteunt geeft de compiler een foutmelding.
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Go Up