Newsgroup: it.comp.lang.visual-basic
Titolo: irc client

Salve a tutti, ho un problema col mio client IRC. Avendo la necessità di
poter entrare in più canali di un certo server IRC contemporaneamente, avrei
dovuto creare un form uguale per ogni canale oppure usare le matrici.
Naturalmente ho usato le matrici che però non hanno funzionato. Il form da
"duplicare" si chiama frmchat e contiene il winsock, un timer, un text box e
le varie sub relative ai dati provenienti dal winsock... Nel form MDI
(principale) ho creato la matrice. Guardate un po' il codicd con la matrice
e senza matrice:
[SENZA MATRICE]
a = InputBox("In che canale vuoi entrare ? ", "IRC Client")
frmchat.Winsock1.SendData "JOIN " & a & vbCrLf
frmchat.Caption = a
frmchat.Visible = True
frmchat.WindowState = 0
[CON MATRICE]
Dim intX As Integer
Dim a As String
Dim frmNew(1 To 100) As New frmchat
a = InputBox("inserisci il nome del canale", "IRC Client")
   For intX = 1 To 1
      frmNew(intX).Show
      frmNew(intX).Caption = a
      frmchat.Winsock1.SendData "JOIN " & a & vbCrLf
   Next
Il codice per la matrice lo preso direttamente da MSDN ed adattato dato che
è la prima volta che uso le matrici...
Avete qualche idea ?
GRazie e ciao
Lord Goliath

    For intX = 1 To 1
carino questo For  :P
Faber

Dim frmNew(1 To 100) As New frmchat
cos'e' questo ?
piuttosto:
Dim frmNew As frmChat
Set frmNew = New frmChat
come, piu' o meno, negli altri linguaggi ;-)
hth, hal

 ha scritto nel messaggio
news:9i01c8$g6vap$1...@ID-56381.news.dfncis.de...


 ha scritto nel messaggio
news:9hvt4s$gg8b6$1...@ID-66268.news.dfncis.de...


 
http://digilander.iol.it/pascas/pippo3/members/01/ircclient.zip
a me da
Errore di run-time '40006':
Protocollo o stato della connessione errato per la transazione richiesta
o la richiesta
alla riga
frmchat.Winsock1.SendData "JOIN " & a & vbCrLf
Faber

e fammi sapere
Be', cose da sistemare ce ne sono, ma le beta (anzi, direi alfa)
si sa bene che sono cosi' :)
Tutto il codice di mnujoin_click, imho dovrebbe essere questo
(o molto simile):
Dim frmNew As frmchat
Dim canale As String
canale = Trim$(InputBox("inserisci il nome del canale", "IRC Client"))
Do While (Len(canale) > 0)
    Set frmNew = New frmchat
    frmNew.Caption = canale
    frmNew.Winsock1.SendData "JOIN " & a & vbCrLf
    frmNew.Show
    Set frmNew = Nothing
    canale = Trim$(InputBox("inserisci il nome del canale", "IRC Client"))
Loop
Tuttavia, ti converrebbe ragionare un po' sulla gestione della comunicazione
tra form mdi e childs, perche' cosi' come e' ora non si riesce a sfruttare la
programmazione ad oggetti (ma e' anche un po' colpa del vb).
ciao, hal

hal sente il bisogno di precisare:
Il codice che ho suggerito non mi piace molto, ma era per rimanere
in linea con il resto.
Tra l' altro, eseguendolo fallisce perche' il winsock del form
caricato non viene prima connesso (operazione che mi aspettavo
avvenisse nel Load del form).
Se pensi di applicare modifiche di architettura, allora anche quel
codice va rivisto.
ciao, hal


esatto, anche volendo gestire più canali la connessione
al server IRC passa per UN solo winsock, che quindi non
va duplicato in ogni form ma messo in un form principale
a parte (volendo invisibile, vedi un pò tu). Questo implica
che ad ogni messaggio in arrivo, è una procedura sul
form principale che deve capire a quale canale si
riferisce e aggiornare la finestra corrispondente..
questo implica che devi tener traccia di tutti le istanze
del form che crei :-)
spero di essermi spiegato,
ciao, Cosma
P.S. anch'io ho scritto un semplice client IRC a suo tempo
e ora stavo considerando di riprendere in mano
il progetto, se ti può interessare una collaborazione
dai un'occhiata al sito comune sez. Leonardo, progetto
#easyIRC ;)

 ha scritto nel messaggio
news:QGV07.4828$D03.1...@news.infostrada.it...


#easyIRC ;)
Magnifico, questo matrimonio s' ha da fare !
Dov'e' il curatore di Leonardoooooooooooooooo ..........
ciao, hal

 cui poi fa le matrici... tipo il winsock cmq scaricati anche tu il sorge e
devi caricare anche i vari controlli come matrice..
winsck1(0)
winsck1(1)
....
--
CiuazŠ,
H0m3r S1mps0n    
h0m3r_...@email.it
ICQ UIN: 122318004
----------------------------------------

 Ciuaz©,


 Lord Goliath
ehm.. nessun progetto :) quello che avevo fatto č stato irrimediabilmente
perso durante l'ultima glaciazione (leggi: ultimo format c:) perň posso
spiegarti: praticamente tu nel client irc devi gestire la connessione ad un
server irc.. bč, ti basta un solo winsock, non uno per canale (cosa che
ottenevi istanziando diverse la form del canale). Di conseguenza, il
controllo winsock non deve far parte del form di canale, ne di query, ma
deve essere posizionato su un form principale di cui cmq crei una sola
istanza, poi farai riferimento a questo per tutte le comunicazioni...
Cosma

 ha scritto nel messaggio
news:eNe17.11907$D03.4...@news.infostrada.it...
