View Full Version : [vb 2008] Aiuto programma
svenskajagare
17-02-2009, 18:34
salve popolo di programmatori di sistemi operativi da far invidia a vista..potreste aiutare un umile novellino alle prime armi cn vb??
allora io sto cercando di fare il mio primo programmino diciamo serio, cioè ke abbia un codice piu o meno degno d essere kiamato tale.
il mio progetto e su un converter di dati binario<=>alfabeto latino, cioè una sorta di crittografia..e quindi ho messo due textbox e un bottone..adx vorrei mettere la struttura for per far elaborare una lettera alla volta. ecco ke sorge il primo problema. come imposto la riga di for per mettere la lunghezza del testo??
eco come ho messo:
' Dim I as integer
for I = 0 to **
...
next'
Dim i As Integer
For i = 0 To TextBox1.Text.Length - 1
MsgBox(TextBox1.Text(i))
Next
;)
agente mm8
19-02-2009, 12:33
Ehi, non usare abbreviazioni da sms, per favore. Perdiamo più tempo a decifrare il tuo messaggio che a risolvere il problema... ok?:)
svenskajagare
04-03-2009, 11:16
Ehi, non usare abbreviazioni da sms, per favore. Perdiamo più tempo a decifrare il tuo messaggio che a risolvere il problema... ok?:)
si chiedo scusa
svenskajagare
04-03-2009, 11:19
ecco ho messo questo codice:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
For i = 0 To TextBox1.Text.Length - 1
Next
If i = "a" Then
ListBox1.Text = ListBox1.Text + "000000"
End If
If i = "b" Then
ListBox1.Text = ListBox1.Text + "000001"
End If
End Sub
il programma non mi segnala errori però quando faccio partire il debug non mi esce il testo nella listbox. cosa ho sbagliato??
banryu79
04-03-2009, 11:30
ecco ho messo questo codice:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
For i = 0 To TextBox1.Text.Length - 1
Next
If i = "a" Then
ListBox1.Text = ListBox1.Text + "000000"
End If
If i = "b" Then
ListBox1.Text = ListBox1.Text + "000001"
End If
End Sub
il programma non mi segnala errori però quando faccio partire il debug non mi esce il testo nella listbox. cosa ho sbagliato??
Non mi intendo di VB.NET ma guardando anche il codice suggerito da MarcoGG a occhio il codice che ti ho evidenziato in grassetto va inserito tra lo statement For e lo statement Next, non dopo il Next.
svenskajagare
04-03-2009, 11:36
è lo stesso. in una finestra sotto, dove vengono visualizzati gli errori, mi esce:
"A first chance exception of type 'System.InvalidCastException' occurred in Microsoft.VisualBasic.dll"
In effetti ci sono parecchi errori.
1. L'Invalid Cast Exception sorge quando tenti di confrontare il contatore i con un tipo String ( o Char... ). Vabbeh che VB è più tollerante riguardo le conversioni implicite dei tipi, ma non fino a questo punto ! :D
Io ti avevo infatti suggerito :
If TextBox1.Text(i) = "a" Then
...
End If
2. Hai messo le istruzioni di controllo fuori dal For.
3. Usi "+" anzichè "&" per concatenare ( errore lieve dato che VB capisce anche il +, ma & è più specifico del linguaggio ).
4. Infine l'uso della ListBox non mi è chiaro. Usi .Text che ritorna la String dell'elemento corrente selezionato in lista, e tenti di modificarlo... Forse intendevi .Items.Add()... :stordita:
svenskajagare
04-03-2009, 12:59
si marco ho provato come dicevi te però adesso mi esce come errore:
Argument not specified for parameter 'item' of 'Public Function Add(item As Object) As Integer'.
svenskajagare
04-03-2009, 13:01
no scusa avevo sbagiato io. comunque ho provato con items.add() ma mi esce di nuovo l'errore di prima cioè:
A first chance exception of type 'System.InvalidCastException' occurred in Microsoft.VisualBasic.dll
Prova semplicemente a spiegare cosa devi farci con la TextBox e la ListBox.
A che ti serve la ListBox ? Cosa vuoi ottenere ?
svenskajagare
04-03-2009, 15:46
allora vi spiego: si mette il testo nel textbox1 poi si clikka sul pulsante e converte il testo in una serie di 1 e 0 che dovrebbero venire visualizzati nella listbox1. non so se mi avete capito.
se mi spiegate vi posto una foto
svenskajagare
04-03-2009, 15:54
ecco ho allegato il file. ora potete vedere meglio
svenskajagare
04-03-2009, 17:27
e questo è il codice dopo i vostri consigli:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
For i = 0 To TextBox1.Text.Length - 1
If i = "a" Then
ListBox1.Items.Add("000000")
End If
If i = "b" Then
ListBox1.Items.Add("000001")
End If
Next
End Sub
dove ho sbagliato??
e questo è il codice dopo i vostri consigli:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
For i = 0 To TextBox1.Text.Length - 1
If i = "a" Then
ListBox1.Items.Add("000000")
End If
If i = "b" Then
ListBox1.Items.Add("000001")
End If
Next
End Sub
Eh, non direi proprio. Quello non è il codice dopo i miei consigli.
Semmai questo :
Dim i As Integer
For i = 0 To TextBox1.Text.Length - 1
If TextBox1.Text(i) = "a" Then
ListBox1.Items.Add("000000")
End If
If TextBox1.Text(i) = "b" Then
ListBox1.Items.Add("000001")
End If
Next
posto che fosse chiaro cosa volevi ottenere con quella ListBox...
Potevi semplicemente scrivere in italiano cosa stavi cercando di fare. La Form di per sè non spiega nulla... ;)
svenskajagare
04-03-2009, 18:11
grazie mille Marco!!!però poi mi sono accorto che con la listbox non funzionava come doveva e quindi ho messo una textbox in modo che venga tutto un insieme di 0 e 1. E ho messo un button per pulire la textbox. Adesso però dovrei far selezionare tutto il contenuto della textbox2 schiacciando il pulsante. qual è il codice per questa operazione??
Adesso però dovrei far selezionare tutto il contenuto della textbox2 schiacciando il pulsante. qual è il codice per questa operazione??
TextBox2.SelectAll()
svenskajagare
04-03-2009, 21:49
ok grazie mille. il form alfabeto <=> binary è finito. adesso mi manca solo l'altro che praticamente deve fare l'inverso cioè da una serie di 1 e 0 deve risalire a caratteri alfanumerici. credo che occorra sempre una struttura for ma come faccio a far prendere in considerazione 6 cifre alla volta?? ad esempio 000000000001 devono essere divise in 000000 e 000001 e poi vengono convertite in "a" e "b". Marco, sapiente Marco...:stordita: :stordita:
svenskajagare
04-03-2009, 21:58
Dim i As Integer
For i = 0 To TextBox1.TextLength Step 6
If TextBox1.Text(i) = "000000" Then
TextBox2.Text = TextBox2.Text + "a"
End If
If TextBox1.Text(i) = "000001" Then
TextBox2.Text = TextBox2.Text + "b"
End If
Next
va cosi??
wingman87
04-03-2009, 21:59
Usa il metodo subString(Integer,Integer) di String
svenskajagare
04-03-2009, 22:02
Usa il metodo subString(Integer,Integer) di String
scusa ma io sono un ignorante in basic. potresti postare un modello di codice??
Dim i As Integer
Dim strTemp As String
For i = 0 To TextBox1.Text.Length - 1 Step 6
strTemp = TextBox1.Text.Substring(i, 6)
MsgBox(strTemp)
Next
;)
svenskajagare
04-03-2009, 22:19
Dim i As Integer
Dim strTemp As String
For i = 0 To TextBox1.Text.Length - 1 Step 6
strTemp = TextBox1.Text.Substring(i, 6)
MsgBox(strTemp)
Next
;)
si ok grazie cosi separa le due sestine di cifre però cosi escono tanti msgbox quante sono le sestine. però io le vorrei dividerle per poi convertirle in lettere. cosi per intenderci:
Dim i As Integer
Dim strTemp As String
For i = 0 To TextBox1.Text.Length - 1 Step 6
strTemp = TextBox1.Text.Substring(i, 6)
If TextBox1.Text(strTemp) = "000000" Then
TextBox2.Text = TextBox2.Text + "a"
End If
If TextBox1.Text(strTemp) = "000001" Then
TextBox2.Text = TextBox2.Text + "b"
End If
Next
questo codice però è sbagliato perchè non viene visualizzato nessun testo nel textbox2
No, stai facendo confusione con l'esempio precedente.
Quello che vuoi tu è :
Dim i As Integer
Dim strTemp As String
For i = 0 To TextBox1.Text.Length - 1 Step 6
strTemp = TextBox1.Text.Substring(i, 6)
If strTemp = "000000" Then
TextBox2.Text = TextBox2.Text & "a"
End If
If strTemp = "000001" Then
TextBox2.Text = TextBox2.Text & "b"
End If
Next
svenskajagare
05-03-2009, 16:41
marco, sei semplicemente un genio..non ho altre parole:D
Ok ! :cool:
Beh, dai. Non era nulla di che...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.