PDA

View Full Version : [VB 2005] Dividere contenuto di una TextBox


luxe
04-06-2008, 11:50
Salve gente, avrei un problemino, è un giorno intero che ci sbatto la testa, ma nada. Dunque, in una textbox ho il seguente contenuto:

(i dati sono di esempio)

Gruppo1, Matricola 1213, Dominio: NT
Gruppo1, Matricola 1215, Dominio: NT
Gruppo1, Matricola 1218, Dominio: NT
Gruppo2, Matricola 1312, Dominio: NT
Gruppo2, Matricola 1511, Dominio: NT
Gruppo2, Matricola 1616, Dominio: NT
Gruppo3, Matricola 1111, Dominio: NT
Gruppo3, Matricola 1414, Dominio: NT
Gruppo3, Matricola 1614, Dominio: NT

ok? bene, a me servirebbe trasformare il contenuto di questa text cosi:

Gruppo1
Matricola 1213, Dominio: NT
Matricola 1215, Dominio: NT
Matricola 1218, Dominio: NT

Gruppo2
Matricola 1312, Dominio: NT
Matricola 1511, Dominio: NT
Matricola 1616, Dominio: NT

Gruppo3
Matricola 1111, Dominio: NT
Matricola 1414, Dominio: NT
Matricola 1614, Dominio: NT

come posso fare ?

(ho provato con cicli for, do while ecc, ma il risultato al max era:

Gruppo1
Matricola 1213, Dominio: NT
Gruppo1
Matricola 1215, Dominio: NT
Gruppo1
Matricola 1218, Dominio: NT

poiche per ogni occorrenza mi ripeta anche il "gruppo"...:muro:

gugoXX
04-06-2008, 13:00
Stai cercando di fare un albero.
Perche' non usare un componente albero? (TreeView)

Comunque non ho capito dove stia il problema. Sei tu che ordini e ristampi le cose no?
E' sufficiente stampare "Gruppo X" solo se X e' diversa dal valore precedente.

luxe
04-06-2008, 14:20
Alura,
Perche mi servono i dati nell'altra maniera ?

Come dice all'inizio, i dati erano fittizi

Gruppo1
Matricola 1213, Dominio: NT
Matricola 1215, Dominio: NT
Matricola 1218, Dominio: NT

i dati mi servono cosi per fare il dump su una active directory e debbono per forza essere cosi.

il dato FINALE sarebbe una cosa di questo genere:

dn: CN=Gruppo1 ,CN=Users,DC=locale,DC=Roma,DC=it
changetype: modify
replace: member
member: CN=1213,CN=Users,DC=locale,DC=Roma,DC=it
member: CN=1518,CN=Users,DC=locale,DC=Roma,DC=it

mentre io ho questo dato:

Gruppo1 member: CN=1213,CN=Users,DC=locale,DC=Roma,DC=it
Gruppo1 member: CN=1518,CN=Users,DC=locale,DC=Roma,DC=it

luxe
05-06-2008, 07:33
up !.....qualche help !

gugoXX
05-06-2008, 07:50
Non capisco davvero il problema.
Hai detto che hai:
Gruppo1
Matricola 1213, Dominio: NT
Matricola 1215, Dominio: NT
Matricola 1218, Dominio: NT




qualcosa tipo

for (su tutte le righe)
{
If (inizia con Gruppo)
Scrivi "dn: CN Gruppo, CN Users, ....)

Else if (inizia con matricola)
Scrivi "member:CN=qualcosa"

Else Errore
}

luxe
05-06-2008, 08:58
Non capisco davvero il problema.
Hai detto che hai:
Gruppo1
Matricola 1213, Dominio: NT
Matricola 1215, Dominio: NT
Matricola 1218, Dominio: NT




qualcosa tipo

for (su tutte le righe)
{
If (inizia con Gruppo)
Scrivi "dn: CN Gruppo, CN Users, ....)

Else if (inizia con matricola)
Scrivi "member:CN=qualcosa"

Else Errore
}


Ciao gugoXX, innanzitutto ti ringrazio,

quello che ho io non è

Gruppo1
Matricola 1213, Dominio: NT
Matricola 1215, Dominio: NT
Matricola 1218, Dominio: NT

ma bensi:

Gruppo1, Matricola 1213, Dominio: NT
Gruppo1, Matricola 1215, Dominio: NT
Gruppo1, Matricola 1218, Dominio: NT
Gruppo2, Matricola 1312, Dominio: NT
Gruppo2, Matricola 1511, Dominio: NT
Gruppo2, Matricola 1616, Dominio: NT
Gruppo3, Matricola 1111, Dominio: NT
Gruppo3, Matricola 1414, Dominio: NT
Gruppo3, Matricola 1614, Dominio: NT

è il risultato finale che dovrebbe essere:

Gruppo1
Matricola 1213, Dominio: NT
Matricola 1215, Dominio: NT
Matricola 1218, Dominio: NT

Gruppo2
ecc...
ecc...

non so se mi sono spiegato bene !

Ti ringrazio infinitamente :-)

gugoXX
05-06-2008, 09:32
Una soluzione l'avevo gia' proposta


vecchiogruppo="";
for(su tutte le righe)
{
questogruppo=prendo il gruppo della riga corrente con substring

if (questogruppo!=vecchiogruppo)
Write "Gruppo="+QuestoGruppo

Write RestanteParteDellaRiga con Substring

vecchiogruppo=questogruppo
}

MarcoGG
05-06-2008, 10:58
Salve gente, avrei un problemino, è un giorno intero che ci sbatto la testa, ma nada. Dunque, in una textbox ho il seguente contenuto:

(i dati sono di esempio)

Gruppo1, Matricola 1213, Dominio: NT
Gruppo1, Matricola 1215, Dominio: NT
Gruppo1, Matricola 1218, Dominio: NT
Gruppo2, Matricola 1312, Dominio: NT
Gruppo2, Matricola 1511, Dominio: NT
Gruppo2, Matricola 1616, Dominio: NT
Gruppo3, Matricola 1111, Dominio: NT
Gruppo3, Matricola 1414, Dominio: NT
Gruppo3, Matricola 1614, Dominio: NT

ok? bene, a me servirebbe trasformare il contenuto di questa text cosi:

Gruppo1
Matricola 1213, Dominio: NT
Matricola 1215, Dominio: NT
Matricola 1218, Dominio: NT

Gruppo2
Matricola 1312, Dominio: NT
Matricola 1511, Dominio: NT
Matricola 1616, Dominio: NT

Gruppo3
Matricola 1111, Dominio: NT
Matricola 1414, Dominio: NT
Matricola 1614, Dominio: NT

come posso fare ?
...


Io farei così : nel mio esempio ci sono 2 textbox, la prima contiene la stringa di partenza, come l'hai postata tu, mentre la TextBox2 è destinata a contenere il risultato.
Il codice è il seguente ( sicuramente può essere ottimizzato e snellito, ma l'ho buttato giù di getto in pochi min. perciò... accontentati :D ) :

Dim strPre As String
strPre = TextBox1.Text

Dim strPost As String = ""
Dim testPre As String = "_"
Dim arrayStr() As String
arrayStr = stringa.Split(vbCrLf)
Dim i As Integer = 0
For i = 0 To arrayStr.GetUpperBound(0)
Dim strLinea As String = CStr(arrayStr(i)).Trim
If strLinea.StartsWith(vbCrLf) Then strLinea = Mid(strLinea, 2, strLinea.Length - 1)
Dim test As String = Mid(strLinea, 1, 7)
If test.Equals(testPre) Then
strPost = strPost & vbCrLf & Mid(strLinea, test.Length + 3, strLinea.Length - (test.Length + 2))
Else
If Not strPost.Equals("") Then
strPost = strPost & vbCrLf & vbCrLf
strPost = strPost & test
strPost = strPost & vbCrLf & Mid(strLinea, test.Length + 3, strLinea.Length - (test.Length + 2))
Else
strPost = strPost & test
strPost = strPost & vbCrLf & Mid(strLinea, test.Length + 3, strLinea.Length - (test.Length + 2))
End If
End If
testPre = test
Next
TextBox2.Text = strPost

Intanto prova... ;)

luxe
05-06-2008, 15:56
Ciao Marco, grazie
ho provato, ma mi da errore qui:

arrayStr = stringa.Split(vbCrLf)

mi dice che stringa non è stato dichiarato

MarcoGG
05-06-2008, 22:29
Ciao Marco, grazie
ho provato, ma mi da errore qui:

arrayStr = stringa.Split(vbCrLf)

mi dice che stringa non è stato dichiarato


:doh:
Errore mio, ( eehhh, quando si fanno le cose di fretta... ) ma si rimedia subito :

Dim strPre As String
strPre = TextBox1.Text
Dim strPost As String = ""
Dim testPre As String = "_"
Dim arrayStr() As String
arrayStr = strPre.Split(vbCrLf)
Dim i As Integer = 0
For i = 0 To arrayStr.GetUpperBound(0)
Dim strLinea As String = CStr(arrayStr(i)).Trim
If strLinea.StartsWith(vbCrLf) Then strLinea = Mid(strLinea, 2, strLinea.Length - 1)
Dim test As String = Mid(strLinea, 1, 7)
If test.Equals(testPre) Then
strPost = strPost & vbCrLf & Mid(strLinea, test.Length + 3, strLinea.Length - (test.Length + 2))
Else
If Not strPost.Equals("") Then
strPost = strPost & vbCrLf & vbCrLf
strPost = strPost & test
strPost = strPost & vbCrLf & Mid(strLinea, test.Length + 3, strLinea.Length - (test.Length + 2))
Else
strPost = strPost & test
strPost = strPost & vbCrLf & Mid(strLinea, test.Length + 3, strLinea.Length - (test.Length + 2))
End If
End If
testPre = test
Next
TextBox2.Text = strPost