PDA

View Full Version : VB , variabile statica di tipo stringa


devil mcry
05-11-2006, 14:30
Ragazzi aiuto ! io ho definito una varibile di tipo stringa statica

dim varibiale as string *10

pero se non riempita o non riempita tutta viene caricata con dei quadratini

es se tutta vuota



come faccio a fare un confronto ignorando i quadratini ?

se la variabile contiene ad esempio pippo verra pippo

se io scrivo quindi per esempio

txtbox.text = variabile

dove il contenuto della txt è pippo il risultato (guardando i contenuti in debug)

pippo = pippo

il confronto non c'è perche sono stringhe diverse. esiste qualcosa tipo il TRIM per gli spazi che mi ignori quei quadratini ? aiutatemi e importante grazie

mynos79
05-11-2006, 17:10
La variabile stringa si dichiara così:

dim nome as string

senza il *10, altrimenti dichiari una stringa lunga 10 carattari, i quali se non sono nulli vengono considerati NULL ... quindi un carattere ascii non visibile e di conseguenza il classico quadratino che windows interpreta ...

Perchè usi il *10?

devil mcry
05-11-2006, 23:27
grazie per la risposta . la dichiaro di soli 10 caratteri per un motivo molto semplice. e all'interno di un type. in pratico sto lavorando con dei file ad accesso diretto , essendo che devono avere le righe tutte uguali e il programma e gestito tipo un database di iscrizione ho creato un type contente 6 campi , 5 dei quali sn stringa e 1 booleano . ovviamente le stringhe devono essere fisse . come posso "ignorare" quel NULL ? non posso definirla dinamica la variabile ( dim variabile as string ) perche senno il file non funzionerebbe piu bene .....

devil mcry
06-11-2006, 15:37
dai un aiutino per favore :(

icecube_HU
06-11-2006, 15:50
dai un aiutino per favore :(

Mah... quanto dici mi lascia perplesso...

A quanto ne so, le variabili stringa a lunghezza fissa (perche' cosi' si chiamano, non statiche/dinamiche... quella e' un'altra cosa !) vengono inizializzate con SPAZI e non Chr$(0), quindi il tuo problema non dovrebbe ESISTERE (...ma visto che ne parli, evidentemente cosi' non e' !)

In questo momento non ho sottomano VB, per cui non posso provare, ma da Excel/VBA l'inizializzazione avviene, appunto con spazi.

Comunque, anche fosse, il tuo problema e' facilmente risolvibile: basta definire una funzione come Trim, che elimini pero' tutti i Chr$(0) !

Public Function Trim0(ByVal s As String) As String
Trim0=Replace(s, Chr$(0), "")
End Function



Ciao !

0rph3n
06-11-2006, 15:54
se la definisci variabile e fai un controllo in input?

icecube_HU
06-11-2006, 17:41
A quanto ne so, le variabili stringa a lunghezza fissa (perche' cosi' si chiamano, non statiche/dinamiche... quella e' un'altra cosa !) vengono inizializzate con SPAZI e non Chr$(0), quindi il tuo problema non dovrebbe ESISTERE !

Confermo che anche con VB6 le variabili stringa a lunghezza fissa vengono inizializzate con SPAZI e NON Chr$(0).

Del resto per verificarlo basta inserire in una qualsiasi routine...

Dim s As String * 10
Debug.Print ">";s;"<"

Quindi da dove escono i... "quadratini" ? :confused: :confused:

devil mcry
06-11-2006, 23:15
ho gia risolto con il replace cmq non è cosi .

il contenuto di una variabile a lunghezza fissa vuota

http://img353.imageshack.us/img353/3129/immaginesk2.th.jpg (http://img353.imageshack.us/my.php?image=immaginesk2.jpg)

e di una variabile dove ho messo uno spazio

http://img478.imageshack.us/img478/9295/immagine2ga9.th.jpg (http://img478.imageshack.us/my.php?image=immagine2ga9.jpg)

non e la stessa cosa e infatti con il trim non li ignoro

conferma finale , 3 variabile dove metto la variabile di lunghezza fissa dopo il replace

http://img478.imageshack.us/img478/5504/immagine3tp2.th.jpg (http://img478.imageshack.us/my.php?image=immagine3tp2.jpg)

sostituisco al chr(0) una scritta ( null in questo caso ) e guardate cosa trovo nella variabile in uscita....

io ho fatto le prove mettendo il punto di interruzione sul end sub per vedere il contenuto delle variabili ...