Allora... spiegazione molto, molto principiante:
Consideriamo tre contenitori di valori:
* La "costante", è globale, e comporta che il proprio valore attribuito non possa essere modificato. Così essa non è una variabile in senso stretto. Va posta al di fuori delle routine.
* La variabile "globale" (che nell'esempio sottostante ho chiamato y_glob) può essere utilizzata in tutte le routine della Classe ove è stata dichiarata. Essa va dichiarata e posta al di fuori delle routine; ed il suo valore può essere modificato.
* La variabile "locale" va dichiarata, invece, all'interno di una routine (con Dim e senza che sia preceduta dalle parole Public o Private) comporta che detta variabile potrà essere utilizzata solo all'interno della routine ove è dichiarata.
Esempio riassuntivo:
' questa è una COSTANTE:
CONST cond AS String = "2 + 1 = "
' questa è una Variabile GLOBALE, ma avendola dichiarata come "Privata"
' potrà essere utilizzata soltanto entro questa Classe:
Private y_glob AS Integer
Public Sub Button1_Click()
' questa è una Variabile LOCALE
' (potrò utilizzare la seguente variabile solo all'interno di questa routine):
Dim x_prim AS Integer
x_prim = 2
y_glob = x_prim + 1
End
Public Sub Button2_Click()
' qui posso utilizzare la "Costante" e la variabile "Globale"
' in quanto entrambe sono... "globali":
Print cond & y_glob
End
Al riguardo vedere:
http://www.gambas-it.org/wiki/index.php/Le_Variabili
http://www.gambas-it.org/wiki/index.php/Le_Costanti
Altri riferimenti interessanti nel forum sull'argomento:
http://www.gambas-it.org/smf/index.php?topic=50.msg1483#msg1483
http://www.gambas-it.org/smf/index.php?topic=107.0
http://www.gambas-it.org/smf/index.php?topic=1760.0
http://www.gambas-it.org/smf/index.php?topic=1725.msg19184#msg19184
http://www.gambas-it.org/smf/index.php?topic=1374.0
http://www.gambas-it.org/smf/index.php?topic=354.msg7265#msg7265
http://www.gambas-it.org/smf/index.php?topic=1356.msg15332#msg15332
La tua Const _cond As String = Chr$(15)
contiene un nome campo che comincia con il crt "_". Ci sono caratteri particolari e, credo che "-" sia uno di quelli, possa provocare errori a Gambas. Puoi vedere I caratteri da anteporre ai nomi di costanti o variabili per l'ambiente Gambas in gambas-beginner-guide.pdf (http://www.google.com/url?sa=t&rct=j&q=gambas-beginner&source=web&cd=1&ved=0CCIQFjAA&url=http%3A%2F%2Fvectorlinux.osuosl.org%2FUelsk8s%2Fgambas-beginner-guide.pdf&ei=8lRJT8a8D-rH0QXa9uTtBQ&usg=AFQjCNG094--pU-rQl02nchhn8ZgqF1HjA&cad=rja)
Prova a scrivere
Const $cond As String = Chr$(15)
.
:ciao:
Ciò che mi dà ancora problemi è la dichiarazione "Const _cond As String = Chr$(15)" ora anche questa viene accetta, ma ottengo comunque una segnalazione di errore: Sintax error, quindi i dubbi sull'assegnazione della Chr$(15) alla costante erano più fondati di quel che pensavo visto che sostituendolo con una stringa qualsiasi l'espressione viene passata.
Probabilmente la dichiarazione come Costante è... allergica alle funzioni (quale è appunto Chr$() )
Dichiarala non come costante, ma semplicemente come contenitore globale:
Public _cond As String = Chr$(15)
La tua Const _cond As String = Chr$(15)
contiene un nome campo che comincia con il crt "_". Ci sono caratteri particolari e, credo che "-" sia uno di quelli, possa provocare errori a Gambas.
Prova a scrivere
Const $cond As String = Chr$(15)
.
Anche così: $cond dà errore di sintassi.
Come anche senza niente: Const cond As String = Chr$(15)
dà errore.
Ricordo che nelle costanti non è possibile associare una variabile o una funzione (es. Chr).
Il valore deve essere definito in fase di dichiarazione e non deve puntare a nessuna cosa al di fuori della dichiarazione stessa.
Ad es.
PUBLIC CONST pippo AS Integer = 1 'Corretto
PRIVATE CONST pluto AS String = "aBc" ' Corretto
PUBLIC CONST paperino AS Long = Clong(0) 'Errato
PRIVATE CONST minni as Boolean = (NOT pippo) ' Errato
A questo punto l'unica è usare una normale variabile stringa, una volta che non viene modificata vale come una costante. :-\
...già !
In vero, la Costante ti consente di sostituire la funzione Chr$() con i caratteri escape attualmente implementati ed attivi:
Carattere escape | | | Equivalente ASCII |
\n | | | Chr$(13) |
\r | | | Chr$(10) |
\t | | | Chr$(9) |
Esempio:
Public Const mia_costante As String = "\t"
Ciò che mi dà ancora problemi è la dichiarazione Const _cond As String = Chr$(15) ora anche questa viene accetta, ma ottengo comunque una segnalazione di errore: Sintax error, quindi i dubbi sull'assegnazione della Chr$(15) alla costante erano più fondati di quel che pensavo...
Aggiorniamo un po'...
Dunque... per scrivere quel valore all'interno di una Costante devi adottare questa modalità:
Const _cond As String = "\x0F"