Oppure

Loading
15/02/07 14:20
Ti ringrazio ancora per le varie risposte..
Tornando sui costrutti generici..

no noi diciamo più un
for k = 0 to file.listcount -1
wsk.senddata = "file:" & k & ":" & file.list(k)
next k
for k = 0 to drive.listcount -1
wsk.senddata = "drive:" & k & ":" & drive.list(k)
next k
for k = 0 to dir.listcount -1
wsk.senddata = "dir:" & k & ":" & dir.list(k)
next k

MI CONSIGLI DI METTERE QUESTI COSTRUTTI IN UN PUBLIC SUB LIST1_DBLCLICK ?

Penso di aver capito questo...

In che modo leggo, nel mio Client quello che invio dal Server..?

Ho pensato a questo..

dim datiricevuti As String
winsock.GetData datiricevuti
If datiricevuti = "drive:" Then
List1.List = "drive"


In questo modo? In precedenza ho letto ciò:

If InStr(1, datiricevuti, "file:", vbTextCompare) <> 0 Then
MyfilePath = Mid(datiricevuti, 6)
End If

MyfilePath è una variabile? Cosa mi indica...??

Oppure tornato al Server, ciò che mi hai scritto devo inserirlo in questo PUBLIC SUB LIST_DBLCLICK ?

in public sub list_dblclick()


Grazie ancora..
15/02/07 15:55
P4p3r0g4
Hai capito cosa fa
for k = 0 to file.listcount -1
wsk.senddata = "file:" & k & ":" & file.list(k)
next k
for k = 0 to drive.listcount -1
wsk.senddata = "drive:" & k & ":" & drive.list(k)
next k
for k = 0 to dir.listcount -1
wsk.senddata = "dir:" & k & ":" & dir.list(k)
next k

?



srivendolo in termini italiani fa un ciclo per ogi elemento del filelistbox (del server) e invia una stringa del genere:
file:(numero della lista associato al filefile):(nome file)

ad esempio
file:4:sonounfile.txt



poi fa un ciclo per ogi elemento del drivelistbox (del server) e invia una stringa del genere:
drive:(numero della lista associato al drive):((lettera drive):)

ad esempio
drive:3:D:



poi fa un ciclo per ogi elemento del dirlistbox (del server) e invia una stringa del genere:
dir:(numero della lista associato alla directory):(cartella\cartellina\ecc\)

ad esempio
dir:9:programmi\emule\incoming\


te lo consiglio di metter in una sub dblclick xkè al dblclick si cambiano i percorsi e i file
Ultima modifica effettuata da P4p3r0g4 15/02/07 15:59
aaa
15/02/07 16:17
P4p3r0g4
prossimo punto.
la ricezione non può avvenire seguendo la tua logica.
dim datiricevuti As String
winsock.GetData datiricevuti
If datiricevuti = "drive:" Then
List1.List = "drive"

perchè i datiricevuti non saranno mai solo "drive:" e quindi la comparazione è inutile.
piuttosto guarda se le prime 6 lettere formano la parola "drive:" cioè
if mid(datiricevuti,1,6) = "drive:" then
...
elseif mid(datiricevuti,1,4) = "dir:" then 
...
elseif mid(datiricevuti,1,5) = "file:" then 
...
end if

poi dovrai ricavare il numero della lista corrispondente (guardando prima quanti decimali sono (do il limite di 2 decimali è possibile dopo espandere ma alrimenti scrivo troppo codice e non si capiusce + niente))e in seguito aggiornare la lista del client ridipingendo tutto
dim numdir as integer
dim numdrive as integer
dim numfile as integer
if mid(datiricevuti,1,6) = "drive:" then

if mid(datiricevuti,8,1) = ":" then
numdrive = mid(datiricevuti,7,1)
list1.additem = mid(datiricevuti,9,len(datiricevuti)-9),numdrive
else
numdrive = mid(datiricevuti,7,2)
list1.additem = mid(datiricevuti,10,len(datiricevuti)-10),numdrive 
end if

elseif mid(datiricevuti,1,4) = "dir:" then 
...
elseif mid(datiricevuti,1,5) = "file:" then 
...
end if
Ultima modifica effettuata da P4p3r0g4 15/02/07 16:18
aaa
15/02/07 22:00
Grazie ancora per la tua gentilezza

for k = 0 to file.listcount -1
wsk.senddata = "file:" & k & ":" & file.list(k)
next k
for k = 0 to drive.listcount -1
wsk.senddata = "drive:" & k & ":" & drive.list(k)
next k
for k = 0 to dir.listcount -1
wsk.senddata = "dir:" & k & ":" & dir.list(k)
next k


questo costrutto precedente for k non l avevo capito. Hai fatto benissimo a spiegarmelo, Ti ringrazio..

te lo consiglio di metter in una sub dblclick xkè al dblclick si cambiano i percorsi e i file


Infatti l ho messo in un Public Sub List1_dblClick

D' accordo! Ma dovrei richiamarlo?

Come funziona questo Public Sub

dovrebbe essere il richiamo di una funzione!

Sbaglio?

La ricezione seguendo la mia logica é stata bocciata! :D

Infatti, non immaginavo ci fosse tutto questo dietro!

dim numdir as integer
dim numdrive as integer
dim numfile as integer
if mid(datiricevuti,1,6) = "drive:" then

if mid(datiricevuti,8,1) = ":" then
numdrive = mid(datiricevuti,7,1)
list1.additem = mid(datiricevuti,9,len(datiricevuti)-9),numdrive
else
numdrive = mid(datiricevuti,7,2)
list1.additem = mid(datiricevuti,10,len(datiricevuti)-10),numdrive
end if

elseif mid(datiricevuti,1,4) = "dir:" then
...


qui dove ci sono questi puntini di sospenzione, dovrei continuare il tuo esempio di procedimento?


elseif mid(datiricevuti,1,5) = "file:" then
...
end if


La domanda sorge spontanea..

come mai la seguente stringa và in errore????

list1.additem = mid(datiricevuti, 9, len(datiricevuti) - 9), numdrive

List1.AddItem equivalente a ...

stò cercando di analizzare la sintassi ma non capisco..

mi dice, previsto fine istruzione! Manca qualche virgola? la parentesi tonda é cmq aperta e chiusa!


Grazie ancora..
15/02/07 22:23
Ho provato il tutto...

Ho inserito il codice nel Winsock_DatiArrival

Dim numdir As Integer
Dim numdrive As Integer
Dim numfile As Integer
If Mid(datiricevuti, 1, 6) = "drive:" Then

If Mid(datiricevuti, 8, 1) = ":" Then
numdrive = Mid(datiricevuti, 7, 1)
List1.AddItem = Mid(datiricevuti, 9, Len(datiricevuti) - 9)
Else
numdrive = Mid(datiricevuti, 7, 2)
List1.AddItem = Mid(datiricevuti, 10, Len(datiricevuti) - 10)
End If

ElseIf Mid(datiricevuti, 1, 4) = "dir:" Then
If Mid(datiricevuti, 8, 1) = ":" Then
numdir = Mid(datiricevuti, 7, 1)
List1.AddItem = Mid(datiricevuti, 9, Len(datiricevuti) - 9)
Else
numdir = Mid(datiricevuti, 7, 2)
List1.AddItem = Mid(datiricevuti, 10, Len(datiricevuti) - 10)
End If

ElseIf Mid(datiricevuti, 1, 5) = "file:" Then
If Mid(datiricevuti, 8, 1) = ":" Then
numfile = Mid(datiricevuti, 7, 1)
List1.AddItem = Mid(datiricevuti, 9, Len(datiricevuti) - 9)
Else
numfile = Mid(datiricevuti, 7, 2)
List1.AddItem = Mid(datiricevuti, 10, Len(datiricevuti) - 10)
End If



ma da quanto sembra..

List1.AddItem = Mid(datiricevuti, 9, Len(datiricevuti) - 9)

quest'istruzione non và

mi da "argomento non facoltativo" come mai?

Grazie, ancora..
16/02/07 15:50
Hacker
forse perchè:

list.additem("oggetto";)

e non:

list.additem = "oggetto"
Ultima modifica effettuata da Hacker 16/02/07 15:52
aaa
16/02/07 17:19
P4p3r0g4
può essere. come al solito sono senza il pc con vb e do i comandi "al volo".

comunque hai toppato
il mid() serve per prendere una parte di stringa dandogli un numero di inizio e quanto vuoi la sezione e si svolge così
mid(stringa,numeroinizio,lungehezzasezione)
quindi io prendevo una parte dei datiricevuti e la analizzavo

ma il mid dell'if mi prendeva leprime tot cifre dei dati e mi guardava la sezione iniziale. se gli avevo spedito "file:" o "drive:" o "dir:"
ma notarsi che queste parole hanno lunghezza diversa. ci sono due metodi. o accorci le parole a una stessa lunghezza o quando fai il confronto dopo calcoli anche la sfasatura dovuta alla parola iniziale

se nel mio esempo prendevo "drive:" che ha 6 lettere e deve trovare il secondo ":" che ti limita il campo numerico lo posso avere nella posizione 8 o 9

123456789
drive:13:
drive:7:
e nelle posizioni seguenti avremmo il percorso vero e proprio equivalente se il ":" è nella posizione 8 dalla nove fino alla fine, se è in posizione 9 dalla 10 fino alla fine.
quindi equivalenti ai mid

ma se noi abbiamo "file:" i secodi ":" non saranno più in posizione 8 o 9 ma

123456789
file:13:
file:2:

capito?

Dim numdir As Integer 
Dim numdrive As Integer 
Dim numfile As Integer 
If Mid(datiricevuti, 1, 6) = "drive:" Then 

If Mid(datiricevuti, 8, 1) = ":" Then 
numdrive = Mid(datiricevuti, 7, 1) 
List1.AddItem = Mid(datiricevuti, 9, Len(datiricevuti) - 9) 
Else 
numdrive = Mid(datiricevuti, 7, 2) 
List1.AddItem = Mid(datiricevuti, 10, Len(datiricevuti) - 10) 
End If 

ElseIf Mid(datiricevuti, 1, 4) = "dir:" Then 
If Mid(datiricevuti, 6, 1) = ":" Then 
numdir = Mid(datiricevuti, 5, 1) 
List1.AddItem = Mid(datiricevuti, 7, Len(datiricevuti) - 7) 
Else 
numdir = Mid(datiricevuti, 5, 2) 
List1.AddItem = Mid(datiricevuti, 8, Len(datiricevuti) - 8) 
End If 

ElseIf Mid(datiricevuti, 1, 5) = "file:" Then 
If Mid(datiricevuti, 7, 1) = ":" Then 
numfile = Mid(datiricevuti, 6, 1) 
List1.AddItem = Mid(datiricevuti, 8, Len(datiricevuti) - 8) 
Else 
numfile = Mid(datiricevuti, 6, 2) 
List1.AddItem = Mid(datiricevuti, 9, Len(datiricevuti) - 9) 
End If
aaa
16/02/07 18:44
Non ho mai lavorato.. con Mid :-(

Ti ringrazio innanzitutto per la tua gentilezza..

Ti espongo il caso..

Ho inserito nel Client un List con il doppio click su di esso..

quindi un List_dblClick

con l esecuzione di ciò!

Private Sub List1_dblClick()
On Error Resume Next
If Client.State = sckConnected Then
Client.SendData "driven"
End If
End Sub

Non sò se stò sbagliando..

Nel Server, ho inserito queste istruzioni

nel DataArrival
dim istru As Integer
winsock.GetData istru
If istru = "driven" Then
List1_dblClick
End If

non sò se sto sbagliando!!!
Ho fatto ciò, perché nel Public Sub, c é appunto istruzione.. quindi ho creato questo collegamento!

Nel Server, avevo il Private Sub List1_dblClick

ma mi consigliasti di toglierlo, per cui lo tolsi

ho messo un

Public Sub List1_dblClick()
On Error GoTo Error
Dir1.Path = List1.List(List1.ListIndex)
For k = 0 To File1.ListCount - 1
Server.SendData "file:" & k & ":" & File1.List(k)
Next k
For k = 0 To Drive1.ListCount - 1
Server.SendData "drive:" & k & ":" & Drive1.List(k)
Next k
For k = 0 To Dir1.ListCount - 1
Server.SendData "dir:" & k & ":" & Dir1.List(k)
Next k
Error:
End Sub


Ora la domanda che ti pongo é...

Avendo un Client con all interno un List1

facendo su di esso il doppio click..

come faccio a visualizzare all interno di esso i dati contenenti nel Server, di cui parlavamo?

i Dati mi escono.. ma diversamente..

devo selezionare il Drive, nel Server, sulla unità c: e autocamente mi compaiono nel List1 (Server) tutte le directory

rivedendo il costrutto é tale..

Public Sub List1_dblClick()
On Error GoTo Error
Dir1.Path = List1.List(List1.ListIndex)
For k = 0 To File1.ListCount - 1
Server.SendData "file:" & k & ":" & File1.List(k)
Next k
For k = 0 To Drive1.ListCount - 1
Server.SendData "drive:" & k & ":" & Drive1.List(k)
Next k
For k = 0 To Dir1.ListCount - 1
Server.SendData "dir:" & k & ":" & Dir1.List(k)
Next k
Error:
End Sub

infatti in ALTO, mi compaiono i due punti :D
per scorrere all indietro.. e raggiungere l unità c:

ma ripeto solo dopo aver selezionato, non il COMBO, ma il DRIVE

grazie ancora, per la tua gentilezza