Puoi spiegare come funziona ?
Più precisamente: quali campi dobbiamo valorizzare lì sul Form per verificare l'errore da te rilevato ?
Devi mettere dei valori nei campi in alto, "Totale elementi", "Elementi da usare" e, opzionale, "Ripetizioni", poi premere il bottone Calcola.
Ho provato ad eseguire il programma passo passo e ho trovato la linea che crea il problema, è nella funzione Calcoladisp:
Public Function Calcoladisp(Elementi As String, Dausare As String, Optional Ripeti As String) As BigInt ''ripeti è optional perchè non sempre serve
Dim Risultato, NElementi, NDausare, NRipeti, i As BigInt ''il risultato finale, num. elementi, num. elementi da usare, num. ripetizioni e indice in formato BigInt
NElementi = BigInt.FromString(Elementi) ''convertiamo le stringhe in BigInt
NDausare = BigInt.FromString(Dausare)
NRipeti = BigInt.FromString(Ripeti) <---E' QUESTA CHE DA ERRORE DI SEGMENTAZIONE
If NRipeti Then 'se ci sono delle ripetizioni...
Risultato = NElementi ^ NRipeti '...è sufficiente un elevamento a potenza
Return Risultato
Endif
Risultato = NElementi 'si parte da numero di elementi da usare conteggiando all'indietro
For i = NElementi To NElementi - NDausare + 2 Step -1 'il calcolo senza ripetizioni
Risultato *= i - 1 'ogni elemento viene moltiplicato con quello che lo precede
Next
Return Risultato
End
Ma la cosa particolare è che lo fa solo se spunto la casellina davanti al campo "Combinazioni", e quindi quando esegue questa Function una seconda volta, Se non spunto la casellina l'errore non si produce.
Infatti in questa maniera e usando dei Print ho visto che Calcoladisp non da il risultato corretto, quindi devo correggerla, mentre Calcolaperm da dei numeri pazzeschi, quindi funziona.
Inoltre ho visto che non mi visualizza i risultati nella rispettive ValueBox, anche qui devo capire il perchè.