PDA

Visualizza la versione completa : [VB] Chi si intende di FUNCTION?


jabjoint
26-07-2002, 18:19
Questo è il codice che mi sforna tutte le combinazioni di lettere il fatto è che se io da una SUB srivo 'MsgBox Pass' lui mi restituisce solo l' ultima combinazione.
Come posso farmele restituire tutte?

'CopyRight by JabJoint ;-)

Function Pass() As String

Dim nT As Integer
Dim c As Long
Dim a1, a2, a3, a4 As String
Dim Pass As String

On Error Resume Next

a1 = "a"
a2 = "a"
a3 = "a"
a4 = "a"

nT = 5 'Solo le prime 5 lettere del alfabeto '25' tutte!

For L1 = 0 To nT

av = Chr(97 + L1)
a1 = av

For L2 = 0 To nT

av = Chr(97 + L2)
a2 = av

For L3 = 0 To nT

av = Chr(97 + L3)
a3 = av

For L4 = 0 To nT

av = Chr(97 + L4)
a4 = av

Pass = a1 & a2 & a3 & a4

Open "C:\WINDOWS\DESKTOP\Password.txt" For Append As #1
Print #1, Pass
c = c + 1
Close #1

Next

Next

Next

Next

MsgBox "Totali combinazioni: " & c

End Function

darkblOOd
26-07-2002, 18:49
secondo me è scritta malissimo sta function..non ci ho capito niente.

Usate i quote [code]

jabjoint
26-07-2002, 19:00
Nn mi interessa se è scritta male o meno. Funziona bene dunque a me va bene il mio problema sta nel reperire esternamente la variabile PASS dove in essa stà ciclicamente una parola es. "aacb".
Chi di voi è in grado di aiutarmi? Grazie a chiunque mi sappia aiutare o cmq ci prova! :ciauz:

darkblOOd
26-07-2002, 19:11
Originariamente inviato da jabjoint
Nn mi interessa se è scritta male o meno. Funziona bene dunque a me va bene il mio problema sta nel reperire esternamente la variabile PASS dove in essa stà ciclicamente una parola es. "aacb".
Chi di voi è in grado di aiutarmi? Grazie a chiunque mi sappia aiutare o cmq ci prova! :ciauz:

io intendevo dire che è scritta male nel senso che non adempie al suo dovere visto che non ti restituisce ciò che vorresti restituito.

Se devi avere più di un valore perche non ti fai restituire una matrice dei valori che genera?

vonkranz
26-07-2002, 19:13
Le funzioni possono restituire anche Vettori, quindi se tu ciascuna combinazione la metti in un elemento di un vettore e alla fine lo attribuisci come risultato della funzione.


...cmq se usi il TAG [code] rendi il codice che posti + comprensibile, facile da legge & interpretare e di conseguenza che vuole aiutarti e' agevolato.
..Poi vedi tu...
Ciao.

AleX ZeTa
26-07-2002, 19:49
allora... crea un modulo standard e inserisci le seguenti righe:

type dati
p() as string
end type


poi nella FUNCTION, al posto di Pass=.... metti:

i=i+1
redim preserve pass.p(0 to i) as string
pass.p=a1 & a2 & a3 & a4 'separati da spazio mi raccomando

mentre nella dichiarazione della function metti:

function pass() as dati


(ovviamente i deve essere azzerato all'inizio della function)

ciao
AleX

jabjoint
26-07-2002, 20:05
Grazie mille proverò per mia sfortuna adesso non posso ti faccio sapere se ci riesco ciao e grazie ancora! :ciauz:

jabjoint
27-07-2002, 15:18
Mi da errore Alex! Mi dice:

Solo i tipi pubblici definiti dall' utente definiti in moduli di oggetto pbblici possono essere utilizzati come parametri o tipi restituiti per routine pubbliche di moduli di classe o come campi di tipi pubblici definiti dall' utente.

Bho... Ho fatto come hai detto. Sono sicuro di non aver sbagliato nulla! Grazie cmq spero non mi lascierai nei guai :ciauz:

jabjoint
28-07-2002, 20:38
Nessuno mi può aiutare?:cry:

Mabi
29-07-2002, 00:12
se io da una SUB srivo 'MsgBox Pass' lui mi restituisce solo l' ultima combinazione.
Come posso farmele restituire tutte?

Ti vuoi fare restituire tutte le 1296 combinazioni in un solo MsgBox ???! :confused:

E' una cosa enorme ! Va be... puoi capirlo provandolo tu stesso.

Ho guardato il tuo codice e mi sono permesso di fare qualche modifica inserendo anche un modulo con la dichiarazione dell'array dinamico.

Il modulo:


Public Password() As String


Il tuo codice modificato:


'CopyRight by JabJoint

Private Sub Pass()
On Error Resume Next

Dim nT As Integer
Dim c As Long
Dim a1, a2, a3, a4 As String

a1 = "a"
a2 = "a"
a3 = "a"
a4 = "a"

nT = 5 'Solo le prime 5 lettere del alfabeto '25' tutte!

Open "C:\WINDOWS\DESKTOP\Password.txt" For Append As #1
For L1 = 0 To nT
av = Chr(97 + L1)
a1 = av
For L2 = 0 To nT
av = Chr(97 + L2)
a2 = av
For L3 = 0 To nT
av = Chr(97 + L3)
a3 = av
For L4 = 0 To nT
av = Chr(97 + L4)
a4 = av

ReDim Preserve Password(c)
Password(c) = a1 & a2 & a3 & a4

Print #1, Password
c = c + 1

Next L4
Next L3
Next L2
Next L1
Close #1

MsgBox "Totali combinazioni: " & CStr(c)
End Sub


Il richiamo della procedura con la tua MsgBox dopo aver premuto Command1:


Private Sub Command1_Click()
Dim StringaTot As String
Dim Cont As Double

Call Pass

For Cont = 0 To UBound(Password)
StringaTot = StringaTot & Password(Cont) & "-"
Next Cont

MsgBox StringaTot
End Sub


In questo modo vedi solamente una parte delle combinazioni, cioè solamente tutte quelle che sono entrate nei limiti di una variabile string (StringaTot) :) :) :)

Penso che le tue intenzioni non erano queste.
Chiariscimi cosa volevi fare...

Loading