' --------------------------------------------
'  Theremino Automation - Stringhe
' --------------------------------------------

' Le prime versioni di Theremino Automation
' non facevano distinzioni tra numeri e stringhe.

' Le variabili erano tutte uguali (da V1 a V9)
' e questo era molto semplice, ma in alcuni casi
' i risultati diventavano poco intuitivi e imprevedibili.

' Cosi, dalla versione 3.0, esistono due tipi di dati.
' I numeri (numeri con la virgola mobile in doppia precisione)
' Le stringhe (semplici sequenze di caratteri ASCII)

' -----------------------------------------------------------------------------------
' VARIABILI DEFINITE DALL'UTENTE - ESEMPI
' -----------------------------------------------------------------------------------
' Variable Numeric Pippo       ' Variabile numerica (inizialmente = 0)
' Variable String  Pluto       ' Variabile stringa (inizialmente = "")

' -----------------------------------------------------------------------------------
' LE VARIABILI PREDEFINITE
' -----------------------------------------------------------------------------------
' v1 v2 v3 v4 v5 v6 v7 v8 v9   ' Variabili numeriche con decimali
' s1 s2 s3 s4 s5 s6 s7 s8 s9   ' Variabili stringa

' Il testo delle stringhe deve essere attorniato da doppi apici.
' Esempi:
v1 = 12345.67
s1 = "Questa è una stringa"

' -----------------------------------------------------------------------------------
' CONVERSIONI DA STRINGHE A NUMERI
' -----------------------------------------------------------------------------------
' Si usa il simbolo "="
' Anche in Italia si usa il punto come separatore decimale.
' Esempi:
v1 = "12345.67"
Print v1

' -----------------------------------------------------------------------------------
' CONVERSIONI DA NUMERI A STRINGHE
' -----------------------------------------------------------------------------------
' Si usa l'istruzione Format
' Per ulteriori istruzioni cercare su Google: "VbNet Format"
' Esempi:
Print Format(1234.56, "000000.000")		'Risultato "001234.560"
Print Format(1234.56, "0.0")			'Risultato "1234.6"
Print Format(1234.56, "0")				'Risultato "1235"
Print Format(Math_PI, "")				'Risultato "3.14159265358979"
Print Format(1234.56, "+0.000;-0.000")	'Risultato "+1234.6" oppure "-1234.6"

' -----------------------------------------------------------------------------------
' CONFRONTI TRA STRINGHE
' -----------------------------------------------------------------------------------
' Le stringhe si confrontano con: > < = >= <= <>
' Il risultato "Vero" o "Falso" può essere stampato
'  o usato nelle istruzioni condizionali "If".

' Esempi:
Print "Duck" = "Cat"			' Risultato "False"

Print Mid("Duck", 4, 1) = "k"	' Risultato "True"

s1 = "Duck"
If s1 = "Duck"                  ' Condizione vera
	Beep                        ' viene eseguito il Beep
EndIf
Stop

' -----------------------------------------------------------------------------------
'  LE FUNZIONI PER LE STRINGHE
' -----------------------------------------------------------------------------------
' Mid(string, index, len)   ' Estrae caratteri, index inizia da 1
' Len(string)               ' Il risultato ? il numero di caratteri
' Trim(string)              ' Elimina spazi iniziali e finali
' PadLeft (string, length)  ' Ritorna la stringa addizionata di spazi fino a "length"
' PadRight (string, length) ' Ritorna la stringa addizionata di spazi fino a "length"

' Str(number)               ' Numero in stringa con il massimo numero di cifre
' Format(number)            ' Numero in stringa con il massimo numero di cifre
' Str(number, style)        ' Numero in stringa con stile specificato
' Format(number, style)     ' Numero in stringa con stile specificato

' UCase(string)             ' Trasforma tutta la stringa in maiuscolo
' LCase(string)             ' Trasforma tutta la stringa in minuscolo
' WCase(string)             ' Trasforma la stringa con iniziale maiuscola
' Chars(string, number)     ' Restituisce il primo carattere ripetuto "n" volte

' Chr(code)                 ' Ritorna il carattere corrispondente al codice specificato
' Asc(string)               ' Ritorna il codice del primo carattere della stringa
' Bin(number)               ' Ritorna una stringa che rappresenta il numero in binario
' FromBin(string)           ' Ritorna un numero convertito dalla stringa binaria
' Hex(number)               ' Ritorna una stringa che rappresenta il numero in esadecimale
' FromHex(string)           ' Ritorna un numero convertito dalla stringa esadecimale

' Questa funzione ritorna una stringa con tutte le "OldStr" sostituite da "NewStr"
' Replace(string, OldStr, NewStr)

' Questa funzione ritorna una stringa senza i commenti inizianti con '
' RemoveComments(string)

' Queste due funzioni contano e estraggono parti di stringa separate da spazi
' GetSeparatedStringCount(str)
' GetSeparatedString(str)

' Due funzioni uguali alle precedenti ma specificando il separatore (anche stringa)
' GetSeparatedStringCount(str, separator)
' GetSeparatedString(str, separator)

' -----------------------------------------------------------------------------------
' LE COSTANTI STRINGA
' -----------------------------------------------------------------------------------
' CRLF      ' Stringa contenente i caratteri 10 e 13
' CR        ' Stringa contenente il carattere 13
' LF        ' Stringa contenente il carattere 10
' CLS       ' Stringa contenente il carattere 12 (cancella l'area di stampa)
' NBSP      ' Stringa contenente uno spazio "non divisibile"
' TAB       ' Stringa contenente un TAB (tabulazione) (carattere 9)

' -----------------------------------------------------------------------------------
' LE FUNZIONI DI DATA E TEMPO
' -----------------------------------------------------------------------------------
' Now()                  ' Risponde una stringa con data e ora
' Today()                ' Risponde una stringa con la data
' Date(year, month, day) ' Crea una data a partire da valori numerici
' ElapsedTime()          ' Il tempo, dall'avvio del programma, in secondi e frazioni


