Arduino Polska Forum

Pełna wersja: Dodanie elementu do tablicy String gdy ów w niej nie występuje
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Cześć

Mamy tablicę 
Kod:
String * tabZalogowani;

jak ją przelecieć Tongue i wywalić powtarzające się String'i Wink

Lub podczas dodawania String'a sprawdzić czy takie coś już w nim jest. Jeśli tak to nie dodawaj, jeśli nie dodawaj do tablicy
Dwa słowa klucze.
1) Pętla for.
2) Warunek porównania IF($string==$string)
Możesz użyć =+ albo+= dokładnie nie pamiętam.
(13-04-2018, 12:31)tombag napisał(a): [ -> ]jak ją przelecieć Tongue i wywalić powtarzające się String'i Wink

Lub podczas dodawania String'a sprawdzić czy takie coś już w nim jest. Jeśli tak to nie dodawaj, jeśli nie dodawaj do tablicy

"Przelecieć" można przez strstr.
Kod:
if ( strstr( wskażnik_na_ciąg1, wskażnik_na_ciąg2 )
{
strcat( wskaźnik_na_ciąg1, wskaźnik_na_ciąg2 );  // Dodajemy
}
else
{
//nie dodajemy
}

(13-04-2018, 15:07)Robson Kerman napisał(a): [ -> ]2) Warunek porównania IF($string==$string)

W PHP to zadziała, w Basic też. Porównanie strignów w C przez proste == nie zadziała bo porównane będą dwa wskaźniki a skoro teksty są w różnych miejscach w pamięci, to wynikiem zawsze będzie fałsz. W c porównanie wykonuje się instrukcją
Kod:
if( !strcmp( string1, string2) )
{

}
W C zmienna nie może zaczynac się od znaku $, operator też.
Arduino ma pewne ułatwienia, udziwnienia więc zapytam z ciekawości (szukając pobieżnie nie znalazłem odpowiedzi) można używać $string?

(13-04-2018, 18:27)adix napisał(a): [ -> ]Możesz użyć =+ albo+= dokładnie nie pamiętam.


Kod:
+=
Wszystkie operatory moga być używane w takiej postaci
Kod:
-=
*=
<<=
>>=

itd ale nie (mowa o C, C++) na stringach, do tego służy strcat. Tu znów pytanie, może w Arduino jest to dopuszczalne?
Panie es2, może zainstaluje Pan sobie Arduino i to sprawdzi, skoro już tu jest? W Arduino można używać większości funkcji C , jako że C++ jest w dużym stopniu z nim zgodny, jednak nie można używać funkcji  C do elementów języka dodanych dopiero w C++. W C nie było klasy String, tylko tablice znaków. Trzeba by najpierw użyć konwersji do "C stringa" string.toCharArray(buf, len) i potem można używać funkcji C na tablicy znaków z C. Niestety składnia jest taka:
Kod:
if( !strcmp( string1, string2) )
{

}
Po dekadach rutyny eksperci zapominają podstaw, czasem warto wrócić do źródeł.
W stringach C++ w Arduino można używać operatorów porównania np. == lub funkcji string1.equals(string2), to jest równoważne. Więcej o C++ w Arduino tutaj: https://www.arduino.cc/reference/en/lang...ingobject/ , a o C tutaj: https://pl.wikibooks.org/wiki/C/Napisy - przynajmniej ja tu się uczę nowych funkcji i polecam.
Dziękuje Wszystkim za odpowiedz jak znajdę trochę czasu żeby przetestować porady wybiorę najkorzystniejsza dla mnie opcję Smile