Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Swiftu. Zároveň využij výhodnou slevovou akci až 30 % zdarma při nákupu e-learningu - více informací.
swift week + discount 30

Diskuze: Makro na zřetězení cesty

Aktivity
Avatar
Aleš Hůlek
Člen
Avatar
Aleš Hůlek:29.11.2021 21:42

Ahoj,
už jsem v koncích. Mohl by mi prosím někdo poradit, jak sestavit řetězec s cestou?
Konkrétně je to pro Arduino a používám Visual Micro.

Díky

Zkusil jsem: #define PATH D:\bla\bla\prefix_
#define NAME jmeno
#define SUFFIX .ino
#define FILENAME PATH NAME SUFFIX

#include FILENAME

Chci docílit: Neustále mi mezi proměnné hází mezery.
Zkoušel jsem už XY variant.
V téhle konkrétní podobě to vyhazuje: D:\bla\bla\pr­efix_jmeno .ino

 
Odpovědět
29.11.2021 21:42
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:30.11.2021 8:22

Ve tvem kodu zadne spojovani nemas. Pokud se to nedeje nejak automaticky nekde jinde...

google = Visual Micro define complete string
google = Visual Concatenation operators
https://docs.microsoft.com/…on-operators

& Operator
+ Operator

https://docs.microsoft.com/…tringbuilder?…

value = String.Concat(value, "This is the second sentence. ");

https://docs.microsoft.com/…ystem.string?…

String Basics in Visual Basic
https://docs.microsoft.com/…tring-basics

  • pozor na zalamovani radku, to je take znak

google = Visual Micro string
google = Visual Micro string operations
https://www.tutorialspoint.com/…_strings.htm
https://www.tutorialspoint.com/…onstants.htm
Ty jo, ta dokumentace je uplne naprd. 99% informaci ti zatajili :) To, co tam je, staci tak max na nejaky skolni projekt, zobraz 2 blikajici svetylka.

https://www.techotopia.com/…Visual_Basic

# to je ale Visual Basic, takze je to mozna naprd...
Dim strFirstName As String = "Fred"
Dim strLastName As String = "Smith"
Dim strTitle As String = 'Mr."
Dim strSalutation As String

strSalutation = strTitle & " " & strFirstName & " " & strLastName

google = Visual Micro string operations define
https://www.arduino.cc/…ltInExamples#…

// adding a constant integer to a string:
stringThree =  stringOne + 123;
// adding a constant long integer to a string:
stringThree = stringOne + 123456789;
// adding a constant character to a string:
stringThree =  stringOne + 'A';
// adding a constant string to a string:
stringThree =  stringOne +  "abc";
// adding two Strings together:
stringThree = stringOne + stringTwo;

int sensorValue = analogRead(A0);
String stringOne = "Sensor value: ";
String stringThree = stringOne + sensorValue;
Serial.println(stringThree);

https://www.arduino.cc/…pendOperator
https://www.arduino.cc/…Constructors

String stringTwo =  String("This is a string");
To se muze hodit, protoze DEFINE je konstanta nikoliv string

https://www.arduino.cc/…pendOperator

String stringOne = "A long integer: ";
// using += to add a long variable to a string:
stringOne += 123456789;

String stringTwo = "A long integer: ";
// using concat() to add a long variable to a string:
stringTwo.concat(123456789);

Tahle stranka se mi libi. Nemaji to tak pekne organizovane jako v t dokumentaci, ale maji praktictejsi priklady.

 
Nahoru Odpovědět
30.11.2021 8:22
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Aleš Hůlek
Člen
Avatar
Aleš Hůlek:30.11.2021 8:58

Jeden z nás je asi úplně vedle :-D. Asi jsem se špatně vyjádřil.
Používám Visual Micro, což je prostředí pro mikrokontroléry ve Visual Studiu.
Nepoužívám Visual Basic.

#define právě musím použít protože potřebuji aby mi to zpracoval preprocesor už při kompilaci a na základě toho natáhl pouze soubory, které potřebuji pro konkrétní projekt a nekompiloval úplně všechno.

 
Nahoru Odpovědět
30.11.2021 8:58
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Aleš Hůlek
DarkCoder:30.11.2021 16:08

Pro sloučení hodnot maker a jejich převedení na řetězec se využívají dva operátory preprocesoru (# a ##).
# - pro převod na řetězec, ## - pro spojování tokenů. NX verze bez expanze makra, bez NX po expanzi makra.

#define PATH D:\bla\bla\prefix_
#define NAME jmeno
#define SUFFIX .ino

#define CATNX(A, B, C) A ## B ## C
#define CAT(A, B, C) CATNX(A, B, C)
#define STRNX(A) #A
#define STR(A) STRNX(A)

#include STR(CAT(PATH, NAME, SUFFIX))

Dojde k rozvoji na #include "D:\bla\bla\p­refix_jmeno.i­no"

Nahoru Odpovědět
30.11.2021 16:08
"Chceš-li předávat své znalosti, měj kvalitní podklady."
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:30.11.2021 18:38

No, chetl jsem ti vypsat postup, co jsem vsechno behem 10 min provedl a nasel... A jak jsem postupne dospel ke slovum.
Na tech odkazech arduino.cc define nepouzivaji.

 
Nahoru Odpovědět
30.11.2021 18:38
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.