Newsgroup: it.comp.lang.visual-basic
Titolo: Type e valori predefiniti

Se ho la definizione di tipo seguente:
type HEAD
a1 as string *8
a2 as string *10
a3 as string *20
....
end type
dim HD as HEAD
HD.a1 = ""
HD.a2 = ""
.....
Esiste un altro modo per assegnare alla variabile HEAD il valore iniziale
spazio per tutto i suoi campi?
TIA.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 TIA.
il valore iniziale di una variabile di tipo String è "", ovvero
vbNullString, per cui sei già a posto.
Se invece la domanda è più complessa, cioè come assegnare lo stesso valore a
tutti i membri di un Type, allora non credo che si possa fare.....
good coding!!!
-- 
Alletun
Sorry, ask me if you want to get my e-mail!

Alletun ha scritto:


Quindi se voglio mettere tutti i singoli membri a spazio...non c'e' altra
via  :-(
grazie.  speravo in qualcosa tipo Head = " " :-)


"fly" <flavyNOS...@YAHOO.FRR> ha scritto nel messaggio
news:br4924$ekj$1...@news.newsland.it...

mah, se l'operazione la devi fare veramente tante volte, ti conviene
adottare due soluzioni:
1) fare una sub, dove passi l'oggetto Head e il valore a cui vuoi impostare
tutte le sue variabili membro. In questo modo, la scrivi una volta, e tutte
le volte che ce l'hai bisogno la richiami
2) perchè i membri a1 e a2 non li fai diventare un array? Così per
l'assegnamento puoi ciclare così:
type HEAD
a(40) as string
....
end type
Dim Pippo As HEAD
Dim i as Long
For i=0 To 40
    Pippo.a(i)=" "
Next
forse ti conviene, no????


 grazie.  speravo in qualcosa tipo Head = " " :-)
ma tu prima avevi scritto "" e non " " ;-)


comunque sia, se dichiari una variabile come string * n, essa contiene n
spazi anche se le viene assegnato un solo spazio
ciaociao

 > > a3 as string *20
ari thx :-)


 ari thx :-)
no, aspetta, una piccola precisazione.....quando dichiari due variabili
così:
Dim strFissa as String * 10
Dim strVariabile as String
l'unica differenza è che strFissa conterrà sempre 10 caratteri. Se fai un
assegnamento così:
strFissa=" " essa conterrà sempre 10 caratteri, aggiungendo spazi a destra
strVariabile invece si adatta al contenuto. Questo te lo dico perchè dalla
tua affermazione
"i singoli 'ai' hanno sono stringhe di dimensioni variabili" è
concettualmente sbagliata, anzi, è proprio il contrario......
leggi anche i post di Marg più sotto, dicono la stessa cosa.....


Marg ha scritto:


Questo e' chiaro ... ma se non gli assegno nulla.... e' null
comunque la tua obiezione e' corretta ... avevo scritto "" al posto di " "


 Questo e' chiaro ... ma se non gli assegno nulla.... e' null
no, prova a fare cosě e vedrai:
Dim HD As HEAD
Debug.Print "'" & HD.a1 & "'"
Debug.Print "'" & HD.a2 & "'"
HD.a1 = " "
HD.a2 = " "
Debug.Print "'" & HD.a1 & "'"
Debug.Print "'" & HD.a2 & "'"
ciaociao

 concettualmente sbagliata, anzi, è proprio il contrario......
forse no hai capito :-)
intendo che a1 e' stringa di 3, a2 stringa di 5, ogniuno varia anche se
mantiene sempre la sua dimensione , cioe'a1 varia rispetto agli altri ai
e per cio' non potrei fare un array 
type ddd
a[i]  as string
end type
non so se mi sono spiegazzato :-)


"fly" <flavyNOS...@YAHOO.FRR> ha scritto nel messaggio
news:br4a71$rk9$1...@news.newsland.it...

sì, tranquillo, ti sei spiegatizzato alla grande!!! ;-)
ti faccio solo un'ultima domanda: c'è e hai un motivo valido per definire le
stringhe così? perchè se no guarda che i vantaggi nell'usare un array ci
sono, soprattutto per risolvere il tuo problema......
perchè io di solito le stringhe a larghezza fissa le uso quando devo leggere
da file di testo a larghezza fissa o casi simili, appunto. In tutti gli
altri casi, uso semplici variabili As String e basta.....
in questo modo useresti l'array e saresti a posto, no?
scusa se insisto, è solo per capire........


 da file di testo a larghezza fissa o casi simili, appunto. ...
Risposta esatta ! una volta creata la variabile Head la vado a inserire
tramite comando put in un file di testo!


 :-)
resta comunque il fatto che non serve assegnare uno spazio ai vari 'ai' in
tal caso, poichč.....beh, vedi l'altro mio post! :)
ciaociao

 tal caso, poichè.....beh, vedi l'altro mio post! :)
esatto, quoto tutto.......in un form metti una textbox Text1 poi incolla
questo:
Option Explicit
Dim Stringa As String * 20
Private Sub Form_Load()
Stringa = "A"
Me.Text1 = Stringa
End Sub
la casella contiene A con 19 spazi a destra. questo per dire che se anche
fai una variabile
a1 as string *8
essa conterrà sempre e comunque 8 caratteri, anche se fai un semplice
assegnamento dello spazio.
