Novità

NUOVO AMBIENTE SCRIPT AREA TECNICA

L

LuigiB

Guest
Ciao Luigi,

nel 2° esempio di griglia hai inserito dei numeri casuali.

ReDim aDati(1000, 55)

For k = 0 To 1000
aDati(k, 0) = k
For j = 1 To 55
aDati(k, j) = Int((90 * Rnd) + 1)
Next
Next
VScroll1.Min = 1
VScroll1.Max = 1000
VScroll1.Value = 1

AlimentaGrid

Se volessi usare un mio script per linserirci parte dell'archivio e poi evidenziare su essoi risultati di altri calcoli,

quali componenti si devono aggiungere per avere tutto funzionante ?

:) GRAZIE.
Un esempio di come riempirla con i dati dell'archivio reale è nel form frmEstrazioni del nuovo progetot che ho messo.
Non ho capito che intendi dopo ? vuoi evidenziare a mano dopo che la griglia è stata riempita o in automatico tramite codice ?
 

i legend

Premium Member
guardate la mia solution della colonna casuale al post 2212
per mike nuovo layout
dovrebbe andare bene cosi
ho eliminato una barra e spostato un po di controlli

nuovo layout.png
 
Ultima modifica:

rubino2

Super Member >PLATINUM<
Text4 = text4 & stringanumeri(nr,".") & vbcrlf

Volevo mettere i nr formattato con un punto nel campo text4.Box del menu

Ma mi da un errore con la funzione wrapped.

Ma forse devo avere anche qualche problema , perche'
Mi si interrompe e mi chiude il form mentre sta lavorando che avevo gia' segnalato l altro giorno.
C e qualcosa di attivo che disturba.

Per ordinamatrice decrescente e' rimasto -1 oppure e diventato zero?

Domani ci guardo con calma.
 

lotto_tom75

Advanced Premium Member
C'è un leggero problemino di possibili numeri duplicati ..

Codice:
 Function generaformazionerandom(num)

Dim i As Long
Const LimiteInf= 0
Const LimiteSup= 90
Dim NumGenerato As Integer
Dim VNumeri() As Integer
ReDim VNumeri(num)
For i = 0 To num
  NumGenerato = Int((LimiteSup - LimiteInf + 1) * Rnd + LimiteInf)
  If PuntiSuArray(NumGenerato, VNumeri) <> 1 Then
  VNumeri(i) = NumGenerato
  End If
Next
Return VNumeri
 
 End Function

🫣
 

i legend

Premium Member
Codice:
 Function generaformazionerandom(num)

Dim i As Long
Const LimiteInf= 0
Const LimiteSup= 90
Dim NumGenerato As Integer
Dim VNumeri() As Integer
ReDim VNumeri(num)
For i = 0 To num
  NumGenerato = Int((LimiteSup - LimiteInf + 1) * Rnd + LimiteInf)
  If PuntiSuArray(NumGenerato, VNumeri) <> 1 Then
  VNumeri(i) = NumGenerato
  End If
Next
Return VNumeri
 
 End Function

🫣
tom Guarda quello che ho scritto io, non serve usare puntisuarray
ovviamente aspettiamo quella che ha scritto Luigi
 

Mike58

Advanced Member >PLATINUM PLUS<
guardate la mia solution della colonna casuale al post 2212
per mike nuovo layout
dovrebbe andare bene cosi
ho eliminato una barra e spostato un po di controlli

Vedi l'allegato 2255268
Che dire.... molto bravo.
Quando puoi mettilo sullo smess cosi da fungere come esempio e guida per chi vuole capire.

Ciao
 

i legend

Premium Member
Text4 = text4 & stringanumeri(nr,".") & vbcrlf

Volevo mettere i nr formattato con un punto nel campo text4.Box del menu

Ma mi da un errore con la funzione wrapped.

Ma forse devo avere anche qualche problema , perche'
Mi si interrompe e mi chiude il form mentre sta lavorando che avevo gia' segnalato l altro giorno.
C e qualcosa di attivo che disturba.

Per ordinamatrice decrescente e' rimasto -1 oppure e diventato zero?

Domani ci guardo con calma.
perchè non utilizzi una listBox?
 
L

LuigiB

Guest
non c'è bisogno del true ...

se fai text1.tex =stringanumeri(aN) il punto ce lo mette da solo è di default .. bisogna vedere che roba pè quell 'NR o se c'è qualche errore che non c'entra niente con stringa numeri
 

i legend

Premium Member
Text4 = text4 & stringanumeri(nr,".") & vbcrlf

Volevo mettere i nr formattato con un punto nel campo text4.Box del menu

Ma mi da un errore con la funzione wrapped.

Ma forse devo avere anche qualche problema , perche'
Mi si interrompe e mi chiude il form mentre sta lavorando che avevo gia' segnalato l altro giorno.
C e qualcosa di attivo che disturba.

Per ordinamatrice decrescente e' rimasto -1 oppure e diventato zero?

Domani ci guardo con calma.
Private Sub Form_Load()
Dim i As Integer
Dim s As String

For i = 1 To 10
s = s & i & vbCrLf
Next

Text1.Text=s
End Sub
 
L

LuigiB

Guest
riguardo le funzioni per generare la colonna casuale mi fa paicere che vi siete applicati , ora propongo un test con le funzioni scritte da me e da legend , c'è un aspetto da considerare che quabdo la classe si avvicina molto ai numeri limite iniziano a capitare parecchi doppioni e la procedra si rallenta , questo rimane aleatorio , una sdelel funzioni la seconda evita i doppiono proprio di base...

in tutti i casi nelle funzioni andrebeb testato se la classe è < di limite .. per velocizzare ci affidiamo alla bravura del programmatore ..


Codice:
    Public Sub MyScriptRoutine()
        Dim aRet ()As Long
        Dim Tinizio As Single
        Dim tFine As Single
        Dim nQ As Long = 5000
        Dim nLimite As Long, nClasse As Long
        Dim k As Long
       
        '
        Messaggio ("Attendere non si puo interrompere")
        nLimite = 90
        nClasse = 15
       
       
        Tinizio = Timer
        For k = 1 To nQ
            aRet = GetColonnaCasuale(nClasse, nLimite)
          '  Call Scrivi(StringaNumeri(aRet, "."))
        Next
        tFine = Timer
        Scrivi "Classe : " & nClasse & " Limite : " & nLimite
        Scrivi "Primo metodo colonna ordinata " & tFine - Tinizio
       
        Tinizio = Timer
        For k = 1 To nQ
            aRet = GetColonnaCasuale2 (nClasse, , nLimite)
           '  Call Scrivi(StringaNumeri(aRet, "."))
        Next
        tFine = Timer
        Scrivi "Classe : " & nClasse & " Limite : " & nLimite
        Scrivi "secondo metodo colonna non ordinata " & tFine - Tinizio
       
        Tinizio = Timer
        For k = 1 To nQ
            aRet = GetColonnaCasuale2 (nClasse, True, nLimite)
           '  Call Scrivi(StringaNumeri(aRet, "."))
        Next
        tFine = Timer
        Scrivi "Classe : " & nClasse & " Limite : " & nLimite
        Scrivi "secondo metodo colonna ordinata " & tFine - Tinizio
       
        Tinizio = Timer
        For k = 1 To nQ
            aRet = GetColonnaCasualeLegend (nClasse, nLimite)
           '  Call Scrivi(StringaNumeri(aRet, "."))
        Next
        tFine = Timer
        Scrivi "Classe : " & nClasse & " Limite : " & nLimite
        Scrivi "terzo metodo colonna ordinata " & tFine - Tinizio
      
      
        Scrivi
        Scrivi "==========================================="
        Scrivi
   
      
        nLimite = 90
        nClasse = 85
       
        Tinizio = Timer
        For k = 1 To nQ
            aRet = GetColonnaCasuale(nClasse, nLimite)
        Next
        tFine = Timer
        Scrivi "Classe : " & nClasse & " Limite : " & nLimite
        Scrivi "Primo metodo colonna ordinata " & tFine - Tinizio
       
        Tinizio = Timer
        For k = 1 To nQ
            aRet = GetColonnaCasuale2 (nClasse, , nLimite)
        Next
        tFine = Timer
        Scrivi "Classe : " & nClasse & " Limite : " & nLimite
        Scrivi "secondo metodo colonna non ordinata " & tFine - Tinizio
       
        Tinizio = Timer
        For k = 1 To nQ
            aRet = GetColonnaCasuale2 (nClasse, True, nLimite)
        Next
        tFine = Timer
        Scrivi "Classe : " & nClasse & " Limite : " & nLimite
        Scrivi "secondo metodo colonna ordinata " & tFine - Tinizio
       
        Tinizio = Timer
        For k = 1 To nQ
            aRet = GetColonnaCasualeLegend (nClasse, nLimite)
        Next
        tFine = Timer
        Scrivi "Classe : " & nClasse & " Limite : " & nLimite
        Scrivi "terzo metodo colonna ordinata " & tFine - Tinizio
       
       
         Scrivi
        Scrivi "==========================================="
        Scrivi
   
      
        nLimite = 30
        nClasse = 25
       
        Tinizio = Timer
        For k = 1 To nQ
            aRet = GetColonnaCasuale(nClasse, nLimite)
        Next
        tFine = Timer
        Scrivi "Classe : " & nClasse & " Limite : " & nLimite
        Scrivi "Primo metodo colonna ordinata " & tFine - Tinizio
       
        Tinizio = Timer
        For k = 1 To nQ
            aRet = GetColonnaCasuale2 (nClasse, , nLimite)
        Next
        tFine = Timer
        Scrivi "Classe : " & nClasse & " Limite : " & nLimite
        Scrivi "secondo metodo colonna non ordinata " & tFine - Tinizio
       
        Tinizio = Timer
        For k = 1 To nQ
            aRet = GetColonnaCasuale2 (nClasse, True, nLimite)
        Next
        tFine = Timer
        Scrivi "Classe : " & nClasse & " Limite : " & nLimite
        Scrivi "secondo metodo colonna ordinata " & tFine - Tinizio
       
        Tinizio = Timer
        For k = 1 To nQ
            aRet = GetColonnaCasualeLegend (nClasse, nLimite)
        Next
        tFine = Timer
        Scrivi "Classe : " & nClasse & " Limite : " & nLimite
        Scrivi "terzo metodo colonna ordinata " & tFine - Tinizio
       
       
    End Sub
 
 
    Function GetColonnaCasuale(nClasse As Long, Optional nLimite As Long = 90) As Long()
    ReDim aB(nLimite) As Long
    ReDim aRet(nClasse) As Long
    Dim k As Long
    Dim nTrovati As Long
    Dim n As Long
    Do
        n = NumeroCasuale (1, nLimite)
        Do While aB(n)
            n = NumeroCasuale (1, nLimite)
       
        Loop
        aB(n) = True
        nTrovati += 1
    Loop While nTrovati < nClasse
   
   
    nTrovati = 0
    For k = 1 To nLimite
        If aB(k) Then
            nTrovati + = 1
            aRet(nTrovati) = k
        End If
       
    Next
    Return aRet
   
End Function
Function GetColonnaCasuale2(nClasse As Long, Optional bOrdinata As Boolean = False, Optional nLimite As Long = 90) As Long()
    ReDim aN(nLimite) As Long
    ReDim aB(nLimite) As Long
    ReDim aRet(nClasse) As Long
    Dim k As Long
    Dim nTrovati As Long
    Dim n As Long
    Dim nLower As Long, nUpper As Long
    nLower = 1
    nUpper = nLimite
   
   
   
    For k = nLower To nUpper
        aN(k) = k
    Next
   
   
    If bOrdinata Then
            Do While nTrovati < nClasse
                n = NumeroCasuale (nLower, nUpper)
                 nTrovati + = 1
                aB(aN(n)) = True
                For k = n To nUpper - 1
                    aN(k) = aN(k + 1)
                Next
                nUpper -= 1
              
            Loop
           
            nTrovati = 0
            For k = 1 To nLimite
                If aB(k) Then
                    nTrovati + = 1
                    aRet(nTrovati) = k
                End If
               
            Next
    Else
       
            Do While nTrovati < nClasse
                n = NumeroCasuale (nLower, nUpper)
                nTrovati += 1
                aRet(nTrovati) = aN(n)
               
                For k = n To nUpper - 1
                    aN(k) = aN(k + 1)
                Next
                nUpper -= 1
            Loop
    End If
           
    Return aRet
   
   
End Function
Function GetColonnaCasualeLegend(nClasse As Long, Optional MaxNum As Long = 90, Optional sCharSep As String = ".") As Long()
    Dim i As Long, nTro As Long, n As Long
    ReDim aN(MaxNum) As Long
    ReDim aTro(nClasse) As Long
    ' aZzero il vettore
    For i = 1 To MaxNum
        aN(i) = 0
    Next
    nTro = 0
  
    Do While nTro < nClasse
        n = NumeroCasuale(1, MaxNum)
        If aN(n) = 0 Then
            nTro + = 1
            aTro(nTro) = n
            aN(n) = 1
        End If
    Loop
    Call OrdinaVettoreL(aTro, 1, 1)
    Return aTro
   
End Function
 
Ultima modifica di un moderatore:

i legend

Premium Member
Luigi non me lo lascia allegare mi dice che è troppo Grosso
.

modifico il mio progetto originale che ho postato la volta scorsa con le modifiche della barra d avanzamento e posto quello.
lo faccio domani mattina , adesso vado a nanna che sono distrutto.
Buona notte a tutti ;)
 

Ultima estrazione Lotto

  • Estrazione del lotto
    venerdì 05 luglio 2024
    Bari
    41
    30
    60
    76
    77
    Cagliari
    65
    23
    89
    37
    34
    Firenze
    65
    31
    84
    86
    19
    Genova
    42
    07
    32
    68
    30
    Milano
    50
    67
    64
    36
    41
    Napoli
    67
    89
    06
    10
    09
    Palermo
    60
    12
    71
    53
    62
    Roma
    06
    54
    80
    37
    62
    Torino
    53
    89
    82
    09
    31
    Venezia
    70
    11
    85
    02
    77
    Nazionale
    72
    71
    50
    03
    46
    Estrazione Simbolotto
    Nazionale
    28
    24
    17
    25
    13
Alto