Novità

NUOVO AMBIENTE SCRIPT AREA TECNICA

  • Creatore Discussione Creatore Discussione LuigiB
  • Data di inizio Data di inizio
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 ?
 
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:
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.
 
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

🫣
 
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
 
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
 
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?
 
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
 
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
 
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:
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
    sabato 23 novembre 2024
    Bari
    33
    80
    86
    52
    25
    Cagliari
    67
    57
    59
    05
    80
    Firenze
    31
    32
    58
    88
    77
    Genova
    40
    39
    23
    36
    81
    Milano
    28
    58
    45
    25
    38
    Napoli
    20
    82
    23
    44
    57
    Palermo
    76
    56
    88
    62
    31
    Roma
    12
    81
    59
    74
    72
    Torino
    46
    53
    72
    45
    23
    Venezia
    04
    12
    42
    64
    20
    Nazionale
    63
    44
    78
    10
    55
    Estrazione Simbolotto
    Torino
    43
    42
    12
    39
    22

Ultimi Messaggi

Indietro
Alto