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
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 !
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 ...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.