Newsgroup: it.comp.lang.visual-basic
Titolo: Split

Allora data in input una stringa ogni volta che trova il carattere "/"
devo dividere i segmenti per cui ho fatto
Input = InputBox("Messaggio....")
Dim sOU()
-> Do Until Input.AtEndOfLine
	NS = Split(Input,"/")
	ReDim sOU(0,NS)
Loop
In questo modo NS contiente il numero di segmenti della stringa, così
vado a ridimensionare la matrice, però mi da errore...
Riga -> necessario oggetto per "prima parte della stinga"
Non capisco come mai...

 ha scritto nel messaggio 
news:1194520733.8...@t8g2000prg.googlegroups.com...
Allora data in input una stringa ogni volta che trova il carattere "/"
devo dividere i segmenti per cui ho fatto
Input = InputBox("Messaggio....")
Dim sOU()
-> Do Until Input.AtEndOfLine
NS = Split(Input,"/")
ReDim sOU(0,NS)
Loop
In questo modo NS contiente il numero di segmenti della stringa, cosģ
vado a ridimensionare la matrice, perņ mi da errore...


 Non capisco come mai...
Ho tolto il Redim ed ora il codice è:
Dim NS()
Do Until Input.AtEndOfLine
	NS = Split(Input,"/")
Loop
Però mi da sempre lo stesso errore...

 Loop
Sinceramente fatico a capire il significato di quanto hai scritto,
sicuramente in VB6 è sbagliato, se è scritto in 
VB.NET
 non mi sembra che
  gli oggetti stringa (se input è tale) abbiamo una priprietà "AtEndOfLine".
Poi assegni a NS (cos'è?) un array derivante dallo split della stringa
input, ma lo assegni ad una funzione redim?
se ho capito quello che vuoi fare il codice è semplicemente questo:
Dim s() As String
Dim s1 As String
s1 = InputBox("Messaggio....")
s = Split(s1, "/")
o anche
Dim s() As String
s = Split(InputBox("Messaggio...."), "/")
a questo punto s contiente l'array delle sottostringhe separate dal
carattere "/".
ciao
stefano


wrote:

Come ti hanno detto anche gli altri, la funzione Split già alloca un
array contenente tutti i pezzi separati dal carattere "/". Non c'è
bisogno di ulteriori spezzettature (a meno che tu non voglia fare
altro).



Ok perfetto, come faccio a sapere che dimensione ha l'array e
recuperare i pezzi?
Esempio
Input="ciao/mamma/come/va"
S=Split(Input,"/")
S contiene 4 sottostringhe
ciao
mamma
come
va
come faccio a sapere che sono 4 ?


UBound(S())
Bada che inizia va da 0 a UBound -1
-> GbC|
www.gbcweb.com
www.chiappori.com
 

 - Mostra testo tra virgolette -
Per cui Tot=UBound(S) mi restituisce il numero delle sottostringhe
trovate?
di conseguenza se faccio
For i=1 to Tot
      File.WriteLine S(i)
Next
trovo 4 righe che contengono le 4 sotto stringhe?

 trovo 4 righe che contengono le 4 sotto stringhe?
For i=0 to UBound(S())
	fai quel che devi
Next i
ciao
stefano


Ok ho capito.... l'ho rifatto e funziona
Input = "Ciao/mamma/come/va"
SubString = Split(Input,"/")
For I=0 to UBound(SubString)
	WScript.Echo SubString(I)
Next
Ciao Grazie

 wrote:

Ok grazie adesso funziona


 - Mostra testo tra virgolette -
Ca..o riga 41 carattere 1 indice non compreso nell'intervallo
'************************************************************************************************************
'* Descrizione:												    *
'* Questo script restituisce il Distiguished Name di un utente dato in
input il Canonical Name dello stesso *
'************************************************************************************************************
set oShell = WScript.CreateObject("WScript.Shell")
set oFso = WScript.CreateObject("Scripting.FileSystemObject")
Percorso = oShell.CurrentDirectory & "\DN_out.txt"
set oFile = oFso.CreateTextFile(Percorso)
Dim vOU()
'Richiedo in Input il Canonical Name dell'utente
Input = InputBox("Inserire il Canonical Name dell'utente:","Richiesta
Canonical Name")
'Assegno a SubString tutte le sottostringhe ricavate con la funzione
Split
'Il Canonical Name è formattato in questo modo:
'dominio/ou/.../CN
'con la funziona Split divido il canonical name in sottostringhe
identificate dal carattere "/"
'dall'esempio otterrò 4 sottostringhe
'dominio - ou - ... - CN
SubString = Split(Input,"/")
'Assegno alle variabili i valori contenuti nella variabile SubString
'che dopo l'operazione precedente è diventata un vettore
'UBound(SubString) restituisce il valore massimo del vettore, in
questo caso 3 perchè il vettore parte da 0
For I=0 to UBound(SubString)
	Select Case I
		'E' la prima sottostringa che ho e rapprensenta il dominio
		Case 0: Dominio = SubString(I)
			oFile.WriteLine "Dominio: " & Dominio & VbNewLine
		'E' l'ultima sottostringa che ho e rappresenta il Common Name
dell'utente
		Case UBound(SubString): CN = SubString(UBound(SubString))
					oFile.WriteLine "CN: " & CN
		'Tutte le altre sottostringhe sono le ou che formano il percorso
		Case Else:
			P=P+1
			vOU(P) = SubString(I)
			oFile.WriteLine "OU: " & vOu(P) & VbNewLine
	End Select
Next
oFile.Close
oFso.Nothing

 Ca..o riga 41 carattere 1 indice non compreso nell'intervallo
Scusa, potresti evidenziare dov'č il problema?
come faccio a sapere qual'č la riga 41???
ciao
stefano

 come faccio a sapere qual'è la riga 41???
Case Else:
                        P=P+1
Riga 41 -->        vOU(P) = SubString(I)


 
hai fatto:
Dim vOU()
ma poi non vedo dove lo dimensioni, quindi se tenti di accedere ad un 
indice ti da errore.
dovrebbe essere qesto il problema.
Non vedo, poi, dove hai inizializzato l'indice P, ho visto la 
dichiarazione ma poi ho visto solo l'incremento senza la sua 
inizializzazione, questa -se manca- potrebbe crearti problemi.
ciao
stefano


Ho provato ad inizializzare P ma non cambia nulla... quello ceh ho
notato è che se inserisco "ciao/mamma" funziona come aggiiungo un
altro pezzo da errore...

 altro pezzo da errore...
Non so se il codice che hai postato sia esaustivo, quindi potrei no 
vedere alcune cose importanti
ma non č piů semplice scrivere
Case Else:
         oFile.WriteLine "OU: " & SubString(I) & VbNewLine
anzichč usare vOU(P)?
Oltretutto non vedo dove hai dimensionato l'array vOU(),
in teoria da qualche parte ci dovrebbe essere un
redim vOU(ubound(SubString) +1)
ciao
stefano