Novità

E' possibile dinamicizzare una call function progressiva...?

lotto_tom75

Premium Member
Messaggi
9.214
Punti reazione
718
Punti
113
Cerco di spiegarmi meglio... 😬

Ho diverse call per rispettive function che richiamano a loro volta alcuni parametri "dinamicizzabili" con lo stesso numero progressivo del tipo:

Sub AnalisiLunghetteFromSceglinumeri15 (Inizio,Fine,aRuote15,Sorte,idFiltro,qIncr,bPrimaEstrFissa,nDistanza,nclasse,alunghette15)

In questo caso di esempio sarebbe da dinamicizzare la function con la variabile X al posto del 15 e X dovrebbe poter assumere qualsiasi valore gli metta nel for relativo...

La domanda è... come possono dinamicizzare questa unica riga? E avere qualcosa del tipo...


call AnalisiLunghetteFromSceglinumeriX (Inizio,Fine,aRuoteX,Sorte,idFiltro,qIncr,bPrimaEstrFissa,nDistanza,nclasse,alunghetteX)

che richiami qualcosa del tipo:


Sub AnalisiLunghetteFromSceglinumeriX (Inizio,Fine,aRuoteX,Sorte,idFiltro,qIncr,bPrimaEstrFissa,nDistanza,nclasse,alunghetteX)

e quindi poter attribuire ad X il valore numerico progressivo che di volta in volta mi necessita... riferendomi però ad una sola SUB "dinamicizzata" appunto...

Questo risolverebbe il problema fastidiosissimo e bloccante del messaggio "overflow" che mi appare nel mio script relativo composto attualmente da tutte le function con numero fisso... pesantissimo e con troppe righe di codice da gestire. 😓


Grazie :)
 
Ultima modifica:

Giggio

Super Member >GOLD<
Messaggi
208
Punti reazione
61
Punti
28
Non si puo fare quello che dici tu , si può creare una sub che chiami tutte le altre in funzione del parametro X che di certo non può costituire parte del nome della routine.
 

lotto_tom75

Premium Member
Messaggi
9.214
Punti reazione
718
Punti
113
Non si puo fare quello che dici tu , si può creare una sub che chiami tutte le altre in funzione del parametro X che di certo non può costituire parte del nome della routine.
Temevo una risposta del genere 😥 . Ok pazienza 🥴.
Comunque grazie Giggio 🙏 :).

Ad ogni modo molto probabilmente in effetti mi basterebbe dinamicizzare il parametro array aruoteX della function che invece rimarrebbe come deve essere "statica". In fine dei conti anche alunghette può rimanere il medesimo...

Sub AnalisiLunghetteFromSceglinumeri(Inizio,Fine,aruote15,Sorte,idFiltro,qIncr,bPrimaEstrFissa,nDistanza,nclasse,alunghette)


Secondo questa leggera ma sostanziale modifica come dinamicizzeresti il parametro aruote in modo che possa valutare in un relativo ciclo operativo vari aruote dinamici del tipo

aruote1
aruote2
aruote3
aruote4
ecc...
fino nel mio caso a aruote35 😬

Dove aruote1, e tutti i suoi analoghi, è un vettore con questo tipo di struttura:

aruote1(3)
aruote1(1)=BA_
aruote1(2)=CA_
aruote1(3)=FI_

ecc...


Grazie se puoi dettagliare anche la tua soluzione possibile e alternativa che hai palesato nella tua risposta.

Ciao :)

ps: io per adesso avrei provato senza esito anche così:

Codice:
For X = 1 To 35
Call AnalisiLunghetteFromSceglinumeri(Inizio,Fine,aruote&X,Sorte,aLunghette)
If ScriptInterrotto Then Exit For
Next
per tentare di richiamare la relativa Sub con il parametro aruote "dinamico":


Codice:
Sub AnalisiLunghetteFromSceglinumeri(Inizio,Fine,aruote&X,Sorte,aLunghette)
ma evidentemente non è nemmeno questa la strada... perchè nella Sub aruote&X non me lo evidenzia neppure come parametro definito...
 
Ultima modifica:

Giggio

Super Member >GOLD<
Messaggi
208
Punti reazione
61
Punti
28
Le funzioni con i parametri servono proprio per avere un'astrazione delle operazioni che svolgono.
Sinceramente non ti capisco ..

Se io faccio una funzone che prevede un parametro di tipo array come in questo caso quando la chiamo gli passo
l'array che voglio e lei al suo interno opera con l'array che gli ho passato , quindi quante volte chiamarla e con quale array dipende da me

cosi a me non piace ma per farti capire ...

Codice:
Option Explicit
Dim aRuote1
Dim aRuote2
Dim aRuote3

Sub Main
   aRuote1  = Array  (  0,1,2,3)
   aRuote2  = Array  (  0,4,5,6,7)
   aRuote3  = Array  (  0, 8, 9)
        
   OperaSuArray 2'
  
End Sub

Sub OperaSuArray  (  numArray)
  
   Select Case numArray
   Case 1
      OutputArray aRuote1 , "aRuote1"
   Case 2
      OutputArray aRuote2 , "aRuote2"
   Case 3
      OutputArray aRuote3 , "aRuote3"
   Case Else
      Scrivi "Non gestito"   
   End Select
End Sub
Sub OutputArray  ( a , NomeArray)
   Dim i
  
   Scrivi "Nome array " & NomeArray
   For i  = 1 To UBound  ( a)
      Scrivi i & " )" & a  ( i)
   Next
End Sub
 

lotto_tom75

Premium Member
Messaggi
9.214
Punti reazione
718
Punti
113
Le funzioni con i parametri servono proprio per avere un'astrazione delle operazioni che svolgono.
Sinceramente non ti capisco ..

Se io faccio una funzone che prevede un parametro di tipo array come in questo caso quando la chiamo gli passo
l'array che voglio e lei al suo interno opera con l'array che gli ho passato , quindi quante volte chiamarla e con quale array dipende da me

cosi a me non piace ma per farti capire ...

Codice:
Option Explicit
Dim aRuote1
Dim aRuote2
Dim aRuote3

Sub Main
   aRuote1  = Array  (  0,1,2,3)
   aRuote2  = Array  (  0,4,5,6,7)
   aRuote3  = Array  (  0, 8, 9)
   
   OperaSuArray 2'

End Sub

Sub OperaSuArray  (  numArray)

   Select Case numArray
   Case 1
      OutputArray aRuote1 , "aRuote1"
   Case 2
      OutputArray aRuote2 , "aRuote2"
   Case 3
      OutputArray aRuote3 , "aRuote3"
   Case Else
      Scrivi "Non gestito"
   End Select
End Sub
Sub OutputArray  ( a , NomeArray)
   Dim i

   Scrivi "Nome array " & NomeArray
   For i  = 1 To UBound  ( a)
      Scrivi i & " )" & a  ( i)
   Next
End Sub
Cio Giggio grazie. Allora guardo di rileggermi un pò la struttura che mi hai indicato... qui sopra e di cercare di semplificare il più possibile il mostruoso e pesante code di oltre 3000 righe che mi sto costruendo con fatica immane 😓

Ad ogni modo operativamente parlando avrei risolto... (anche se nella forma meno elegante e sintetica possibile 🤣) solo che... avrei bisogno di far acquisire uno stesso gruppo numerico per tutte le function che ho messo in cascata... e che per adesso eseguono ciò che devono fare solo se rimetto prima di ognuna di esse l'array popolato con i numeri base desiderati...

per semplificare un pochino.😕.. ho provato anche a fare una piccola function di lettura file txt dove risiede il gruppo numerico ma nonostante i numeri vengano letti correttamente non riesco a passarli alle varie function in cascata che li devono gestire... 😕

es.

Codice:
Sub Qualsiasi...

Select Case ScegliTipoSviluppo

Case 1

Call leggigrupponumericodibasedasviluppare

alunghette = Array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)

Call AnalisiLunghetteFromSceglinumeri(Inizio,Fine,aruote1,Sorte,nclasse,alunghette)
Call AnalisiLunghetteFromSceglinumeri2(Inizio,Fine,aruote2,Sorte,nclasse,alunghette)
Call AnalisiLunghetteFromSceglinumeri3(Inizio,Fine,aruote3,Sorte,nclasse,alunghette)


End Select

End Sub

Function leggigrupponumericodibasedasviluppare

Dim sfiletxtgrupponumerico,sfile
sfiletxtgrupponumerico = ".\sfiletxtgrupponumerico.txt"
sfile = sfiletxtgrupponumerico


Call Messaggio("Lettura file di testo")
      ReDim aRighe(0)
      Dim y
      Call LeggiRigheFileDiTesto(sfile,aRighe)
  
      For y = 0 To UBound(aRighe)
      If aRighe(y) <> "" Then
      ReDim alunghette(0)  
     Call SplitByChar("." & aRighe(y),".",alunghette)
     End If
     Next

End Function

Il tutto infatti... funziona solo se faccio così:


Codice:
Sub Qualsiasi...

Select Case ScegliTipoSviluppo

Case 1

Call leggigrupponumericodibasedasviluppare

alunghette = Array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)

Call AnalisiLunghetteFromSceglinumeri(Inizio,Fine,aruote1,Sorte,nclasse,alunghette)

alunghette = Array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)

Call AnalisiLunghetteFromSceglinumeri2(Inizio,Fine,aruote2,Sorte,nclasse,alunghette)

alunghette = Array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)


Call AnalisiLunghetteFromSceglinumeri3(Inizio,Fine,aruote3,Sorte,nclasse,alunghette)


End Select

End Sub

Function leggigrupponumericodibasedasviluppare

Dim sfiletxtgrupponumerico,sfile
sfiletxtgrupponumerico = ".\sfiletxtgrupponumerico.txt"
sfile = sfiletxtgrupponumerico


Call Messaggio("Lettura file di testo")
      ReDim aRighe(0)
      Dim y
      Call LeggiRigheFileDiTesto(sfile,aRighe)
  
      For y = 0 To UBound(aRighe)
      If aRighe(y) <> "" Then
      ReDim alunghette(0)  
     Call SplitByChar("." & aRighe(y),".",alunghette)
     End If
     Next

End Function
Ovvero se prima di ogni call function progressiva ripopolo l'array che ciascuna di esse deve analizzare... 🥴

Così facendo lo script funziona ma ovviamente ha il grosso problema che se voglio cambiare il file numerico di base lo devo fare per 35 volte 😱 anzichè una volta soltanto come mi sarebbe invece richiesto se riuscissi a passare i numeri alle function dall'unico file txt modificabile eventualmente di volta in volta...

Grazie 1000 se mi illumini su questo punto di buio dovuto anche al caldo oltre al fatto che non sono affatto un programmatore professionista ma solo amatoriale e perfino di basso anzi bassissimo livello 🤪😜 Ciao
 
Ultima modifica:

Giggio

Super Member >GOLD<
Messaggi
208
Punti reazione
61
Punti
28
che senso ha qui ? l'array aLunghette viene rialimentato N volte per nessuna ragione ...


Codice:
For y = 0 To UBound(aRighe)
      If aRighe(y) <> "" Then
      ReDim alunghette(0) 
     Call SplitByChar("." & aRighe(y),".",alunghette)
     End If
     Next
 

lotto_tom75

Premium Member
Messaggi
9.214
Punti reazione
718
Punti
113
che senso ha qui ? l'array aLunghette viene rialimentato N volte per nessuna ragione ...


Codice:
For y = 0 To UBound(aRighe)
      If aRighe(y) <> "" Then
      ReDim alunghette(0)
     Call SplitByChar("." & aRighe(y),".",alunghette)
     End If
     Next
Giusto. Pensi possa dipendere da questo il fatto che non passi i valori alle function in cascata? :unsure: Grazie
 

Giggio

Super Member >GOLD<
Messaggi
208
Punti reazione
61
Punti
28
Buongiorno LottoTom , devo fare un meaculpa e darti una bella notizia
Codice:
Option Explicit
Sub Main
  
   Dim FP 
  Set FP = GetRef("F")

   Scrivi FP("a")
   Scrivi FP(123)
End Sub

Function F(p)
  F = p + p
End Function
 

lotto_tom75

Premium Member
Messaggi
9.214
Punti reazione
718
Punti
113
Buongiorno LottoTom , devo fare un meaculpa e darti una bella notizia
Codice:
Option Explicit
Sub Main
 
   Dim FP
  Set FP = GetRef("F")

   Scrivi FP("a")
   Scrivi FP(123)
End Sub

Function F(p)
  F = p + p
End Function
Grazie mille Giggio :) Anche se non ho ben chiaro di cosa si tratti guardandolo in forma ermetica... non vedo l'ora di provarlo... se ha a che vedere come penso con il prb che ho riportato sopra. 👋🙂
 

Giggio

Super Member >GOLD<
Messaggi
208
Punti reazione
61
Punti
28
come vedi c'è una funzione che si chiama F che ha un solo paramero P

ora se fai caso quando nel codice si chiama la funzione non si scrive la classica riga
Codice:
call F( ..)
bensi si ottiene prima una referenza allla funzione F

con questa parte di codice
Codice:
Dim FP 
Set FP = GetRef("F")
Come vedi F il nome della funzione è scritto tra virgolette quindi è una stringa

quando la si chiama la si chiama attraverso la sua referenza con FP , la a che vedi è un parametro arbitrario messo a caso per fare il test

Codice:
Scrivi FP("a")
oppure
Codice:
 Scrivi FP(123)

anche in questo caso 123 è un parametro arbitrario.


dato che la funzione F come vedi da quello che fa ritorna la somma del valore del parametro su se stesso se passi "a" torna "aa" se passi 123 torna 246


quindi si puo chiamare una funzione il cui nome sia dinamico e letto da una stringa ? la risposta è si.
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 29 settembre 2020
    Bari
    26
    24
    40
    80
    49
    Cagliari
    07
    33
    55
    89
    81
    Firenze
    53
    20
    13
    75
    41
    Genova
    19
    47
    62
    29
    06
    Milano
    82
    17
    24
    21
    50
    Napoli
    39
    02
    72
    42
    78
    Palermo
    04
    74
    78
    38
    61
    Roma
    19
    14
    20
    90
    82
    Torino
    47
    41
    57
    70
    02
    Venezia
    33
    48
    75
    23
    49
    Nazionale
    56
    16
    62
    43
    15
    Estrazione Simbolotto
    Palermo
    16
    42
    18
    10
    37

Ultimi Messaggi

Alto