Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - problema curioso con if
Forum - Visual Basic 6 - problema curioso con if

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
salve ragazzi.....
qualche giorno fa' facendo alcuni test sul mio programma di p2p, mi sono imbattuto su un malfunzionamento piuttosto strano.......all'interno di un ciclo for al posto di nidificare if ne eseguo 1 con piu' and.......
esempio
questo codice mi funziona male:
Codice sorgente - presumibilmente Delphi

  1. if a = b and c=d and w=r then
  2.     msgbox "ciao"
  3.  end if



invece scritto cosi' mi funziona bene:

Codice sorgente - presumibilmente Delphi

  1. if a= b then
  2.     if c=d then
  3.        if w=r then
  4.           msgbox "ciao"
  5.        end if
  6.     end if
  7.  end if



il codice non e' ce mi desse degli errori, pero' il prog non mi funzionava bene......
ma usare piu' and all'interno di un if pensavo fosse la stessa cosa di mettere piu' if o mi sbaglio?

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 22:20
Mercoledì, 01/07/2009
Quali valori hanno le variabili quando il codice non funziona come ti aspetti?

Hai fatto delle prove di debugging?

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 22:36
Mercoledì, 01/07/2009
il codice postato sopra era solo un esempio giusto per spiegarmi....questo e' il codice che uso.......
confronto l'item di una collection con i dati del getdata del winsock

Codice sorgente - presumibilmente VB.NET

  1. For Each parola8 In collrichieste
  2.  If Not parola8 = "" Then
  3.    If Split(parola8, "£££$$$@@@;;;")(1 - 1) = "ricerca fonti per resume" Then
  4.      If Split(parola8, "£££$$$@@@;;;")(2 - 1) = Split(data, "£££$$$@@@;;;")(2 - 1) Then
  5.        If Split(parola8, "£££$$$@@@;;;")(3 - 1) = Split(data, "£££$$$@@@;;;")(3 - 1) Then
  6.           trovato11 = True
  7.           Exit For
  8.        End If
  9.      End If
  10.    End If
  11.  End If
  12. Next parola8



se io al posto di mettere piu' if ne metto uno con piu' and mi da un problema stranissimo, non mi esegue piu' il codic eche viene dopo  next parola8.........
dopo next parola8 c'e un if not trovato11. cioe' se la variabile booleana trovato11 e' falsa deve eseguire del codce..........ed il codice non me lo esegue........invece nidificando gli if cosi' me lo esegue.......

  

Ultima modifica effettuata da il 01/07/2009 alle 22:37
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 22:46
Mercoledì, 01/07/2009

Testo quotato

Postato originariamente da muteblaster:

il codice postato sopra era solo un esempio giusto per spiegarmi....questo e' il codice che uso.......



Beh ... potevi dirlo prima ... con le variabili, infatti, il problema non poteva esistere.

Invece, con tutte le Split che esegui, e' ovvio che puoi avere comportamenti diversi, dato che sono eseguite durante l'evaluation dell'espressione della if ...

Il codice che hai scritto, fra l'altro, non e' affatto ottimale e ti consiglio di cambiarlo ... ad esempio, al posto di

If Not parola8 = "" Then

e' meglio scrivere (per chiarezza)

If Len(parola8)>0 Then

Dopo di che, non si capisce perche' e in che modo usi tutte quelle Split ...

La Split deve essere UNA SOLA ovvero

arr = Split(parola8, "£££$$$@@@;;;")

seguita dalle if che ti servono. Ovvero, la prima sarà

If arr(0) = "ricerca fonti per resume" Then

mentre le altre non hanno senso e dovrai farci capire a che servono.

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 23:51
Mercoledì, 01/07/2009
ora ho capito il perhce' non funzionava correttamente......
quando un peer riceve una richiesta controlla se nella collection e' presente se non lo e' lo aggiunge.....la richiesta viene controllata in base al comando "ricerfa fonti" il secondo split che e' il codice hash , ed il terzo split che e' il virtual ip.......
se nella collection c'e' quel comando associato al quel codice hash a quel virtualip e' gia' in atto il temtativo di creare un rooting......

qesta era la idea che mi era venuta............

Ultima modifica effettuata da il 02/07/2009 alle 6:55
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 8:44
Giovedì, 02/07/2009
No ... non ti ho capito, scusa ma non hai risposto alla mia domanda ...

Questa riga

If Split(parola8, "£££$$$@@@;;;")(2 - 1) = Split(data, "£££$$$@@@;;;")(2 - 1) Then

non ha senso perche' stai paragonando due valori identici (che saranno per forza uguali) e non e' comunque ottimale perche', come ti ho detto prima, la Split va eseguita prima e una sola volta (per non parlare dell'inutile 2-1 ...)


PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 13:39
Giovedì, 02/07/2009
quella del 2-1 e' una fissa mia perche' il conteggio parte da 0 quindi il primo elemento e' e' 0 il secondo e' uno e per non entrare in errore metto 2-1........

non ho ben charo quello che mi dici, sono per forza uguali.....io nella collection inserisco tutti i comandi che il programma esegue....."cerca file" , "cerca hash", "cerca messaggi".....quindi il primo split della collection non e' per forza "ricerca fonti"..........se il primo elemento della collection e' "ricerca fonti" allora confronto anche il restante della stringa.........

  

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 14:43
Giovedì, 02/07/2009
Ma la if che ti ho evidenziato, secondo te, cosa vuol dire?

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 16:27
Giovedì, 02/07/2009
vuol dire che se il primo split di parola8 e' uguale al primo split del data continuo ad esegure il codice........

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo