CHiedo scusa all'admin e agli altri per il mio comportamento scorretto.
E dire che sono informatico di professione da 15 anni..
i miei errori in questo forum sono dovuti al fatto che, come potrete vedere,
ho postato nel forum alle 3 del mattino circa... ero abbastanza "stremato".
Il giorno si lavora... e il tempo per questo mio progetto ce l'ho solo dalle dieci di sera in poi
Ciò non costituisce una scusa valida, me ne rendo conto, ma questo è stato.
Chiedo ancora scusa.
Per tornare a bomba al discorso chiuso, giustamente, dall'admin:
( era: passaggio variabili da ... )
a oregon rispondo che.. No. è escluso che la variabile non sia valorizzata.
Controllato svariate volte. Anche passando una stringa "PIPPO" al posto della variabile.
a GRUMPY chiedo, se possibile, ancora un pò di attenzione al mio problema dato che effettivamente la sua mi sembra una strada percorribile.
A TUTTI invece dico che la seguente SUB è una sub, trovata su web, e che sto modificando, che serve a gestire le stringhe inviate da un server irc.
Ora: il form che si occupa di "chattare" può venir chiuso (dispose) ogni volta che l'utente vuole. Ho la necessità quindi di NON perdere la connessione al server, nel caso in cui il form venga chiuso....ed è per questo che ho il bisogno reale di tenere questa sub in un modulo!
Gestirei la chiusura del form inviando un comando "/PART #nomecanale", ma preserverei aperta la connessione al server!
Avevo evitato di postare il codice, sperando in un aiuto basato sull'intuito e sull'esperienza dei lettori, dato che mega sub è effettivamente una mega sub!
BTW, questo è il codice.
come dicevo, questa ub stava in un modulo na, per farla funzionare l'ho dovuta incollare direttamente nel form.codice:Public Sub ConnectThread_() TextBox1.Text = "" TextBox1.Text = "LOGS:" & vbCrLf Label3.BackColor = Color.Red Label3.Text = "disconnesso" ConnectToServer: Dim ipHostInfo As System.Net.IPHostEntry 1: Try : ipHostInfo = System.Net.Dns.GetHostEntry(Server) : Catch : GoTo 1 : End Try Dim EP As New System.Net.IPEndPoint(ipHostInfo.AddressList(0), port) sock = New System.Net.Sockets.Socket(EP.Address.AddressFamily, Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp) sock.Connect(Server, port) send("NICK " & nick) send("USER " & "FC IRC" & " 0 * :" & "FC IRC") 'rtbChat.Text = "Connecting ... " & vbNewLine ServerLoggs: Try Do While sock.Connected = True Dim data(4096) As Byte sock.Receive(data, 4096, SocketFlags.None) Dim mail As String = System.Text.ASCIIEncoding.UTF8.GetString(data) TextBox1.Text = TextBox1.Text & Hour(Now) & ":" & Minute(Now) & "." & Second(Now) & "-->" & mail & vbCrLf If mail.Contains(" ") Then If mail.Substring(mail.IndexOf(" ") + 1, 7) = "PRIVMSG" Then If mail.Contains("#") Then Dim senderr As String = mail.Remove(0, 1) senderr = senderr.Split("!")(0) Dim channel_ As String = mail.Remove(0, mail.IndexOf("PRIVMSG")).Replace("PRIVMSG", "").Replace(" ", "").Split(":")(0) Dim SentText As String = mail.Remove(0, mail.IndexOf("#")).Remove(0, channel_.Length + 2) 'rtbChat.Text &= "[" & Now.ToLongTimeString & "] <" & senderr & "> : " & SentText Else 'Dim channel_ As String = mail.Remove(0, mail.IndexOf("PRIVMSG")).Replace("PRIVMSG", "").Replace(" ", "").Split(":")(0) 'Dim SentText As String = mail.Remove(0, mail.IndexOf("#")).Remove(0, channel_.Length + 2) Dim pollo As New FRM_QUERY pollo.TXT_LEGGI.Text = pollo.TXT_LEGGI.Text & "oooooo" & vbCrLf pollo.Visible = True End If ElseIf mail.Contains("PING") Then Dim pserv As String = mail.Substring(mail.IndexOf(":"), mail.Length - mail.IndexOf(":")) pserv = pserv.TrimEnd(Chr(0)) mail = ("PING from " & pserv).Insert(11, " ") & ("PONG to " & pserv).Insert(9, " ") send("PONG " & pserv) ElseIf mail.ToLower.Contains("already in use") Then nick &= "_" send("NICK " & nick) Threading.Thread.Sleep(500) send("USER " & "SMTest" & " 0 * :" & "SMTest") Threading.Thread.Sleep(500) 'rtbChat.Text &= "Nick name already in use , using alternative nick name" & vbNewLine ElseIf mail.Contains("You have not registered") Then sock.Disconnect(False) sock.Close() GoTo ConnectToServer ElseIf mail.ToLower.Contains("ix") Then send("JOIN " & channel) ElseIf mail.Contains("353") Then LButenti.Items.Clear() Dim lines() As String = mail.Split(vbNewLine) For Each line In lines If line.ToLower.Contains(" 353") Then Dim channel__ As String = mail.Remove(0, mail.IndexOf("#")).Split(":")(0) onlinemembers = line.Remove(0, line.IndexOf("#")).Remove(0, channel__.Length).Split(" ") For Each member In onlinemembers LButenti.Items.Add(member.ToString) Next End If Next Label3.BackColor = Color.GreenYellow Label3.Text = "CONNESSO" ElseIf mail.Contains("JOIN :#") Then Threading.Thread.Sleep(300) send("NAMES " & channel) ElseIf mail.Contains("PART #") Or mail.Contains("QUIT") Then Threading.Thread.Sleep(300) send("NAMES " & channel) ElseIf mail.Contains("KICK " & channel) Then Dim AssKicker = mail.Remove(0, 1).Split("!")(0) Dim Reason = mail.Remove(0, 1).Remove(0, mail.IndexOf("#") + 10).Split(":")(1) Dim kickedasshole = mail.Remove(0, 1).Remove(0, mail.IndexOf("#") + 11).Split(":")(0) If kickedasshole.ToLower.ToString.Trim() = nick.ToLower Then Dim kicked As Boolean kicked = True sock.Disconnect(False) sock.Close() Exit Sub Else send("NAMES " & channel) End If ElseIf mail.Contains("MODE " & channel) Then mail = mail & " " Dim WhoSetMode As String = mail.Remove(0, 1).Split("!")(0) Dim WhoIsLucky As String = mail.Split(" ")(4) Dim WhatHeGot As String = mail.Split(" ")(3) 'rtbChat.Text &= WhoSetMode & " Sets Mode " & WhatHeGot & " On " & channel & " & WhoIsLucky & vbNewLine" send("NAMES " & channel) ElseIf mail.Contains(channel & " :Cannot join channel (+b)") Then sock.Disconnect(False) sock.Close() Exit Sub End If End If Loop Catch ex As Exception MsgBox(ex.Message, , "MODULO 2: NON GESTITO") End Try End Sub
il problema del passaggio di variabili a un form esterno
è relativo alla parte di codice in cui ricevo una stringa dal server
e ci lavoro sopra per avere una lista di nick.
ECCO.codice:ElseIf mail.Contains("353") Then LButenti.Items.Clear() Dim lines() As String = mail.Split(vbNewLine) For Each line In lines If line.ToLower.Contains(" 353") Then Dim channel__ As String = mail.Remove(0, mail.IndexOf("#")).Split(":")(0) onlinemembers = line.Remove(0, line.IndexOf("#")).Remove(0, channel__.Length).Split(" ") For Each member In onlinemembers LButenti.Items.Add(member.ToString) Next End If Next Label3.BackColor = Color.GreenYellow Label3.Text = "CONNESSO"
Se incollo la sub nel form
la riga LButenti.Items.Add(member.ToString) funziona correttamente.
Se incollo la sub in un modulo , la stessa riga frmdestinazione.LButenti.Items.Add(member.ToString ) NON FUNZIONA.
Viene processata senza errori, ma totalmente ignorata!
Spero di aver fatto tutto correttamente, questa volta.
Grazie a tutti per l'attenzione
e grazie anche a chi precedentemente mi ha risposto, aiutandomi in altri thread, senza ricevere risposta![]()



Rispondi quotando