Novità

Non riesco a interpretare questa riga

genios

Advanced Member >PLATINUM<
Non riesco a interpretare la riga con eval (de)


If Cadenza(Estratto(es,r,p)) = eval(de)Then

del seguente script .

Codice:
Sub Main() 
Scrivi "Per Genios : somma ritardi DecinaNaturale per la sorte minima di ambo(Cinzia)":Scrivi
ColoreTesto 2:Scrivi "estr." & Space(23) & "somma rit. " & Space(3) & "casi" & Space(16) & "ritardi":ColoreTesto 0
de = InputBox("Di quale decina vuoi controllare la somma dei ritardi per ambo?",,3)
r = 8
fin = EstrazioneFin
ini = fin - 5000 - 1
For es = ini To fin
ce = ce + 1
cc = cc + 1
co = 0
Messaggio(es)
For p = 1 To 5
If Cadenza(Estratto(es,r,p)) =  eval(de)Then
co = co + 1

If co = 2 Then
casi = casi + 1

If ce < 0 Then 
ce = 0
End If 
If Cadenza(casi) = 0 Then 
ColoreTesto 2 
Else

 ColoreTesto 0
End If 
If Cadenza(casi) = 0 Then 
cc = 0
End If 
Scrivi es & " " & SiglaRuota(r) & Space(3) & StringaEstratti(es,r) & Space(9) & FormatSpace(cc,3,1) & Space(5) & _
FormatSpace(casi,4,1) & Space(20) & ce
ce = 0
End If
End If
Next
Next
End Sub

Ciao Eugenio
 
Ciao Eugenio.

Eval_utate valuta cioè restituisce il valore di "de".

"de" immesso con inputbox è una stringa,

che NON E' (riconosciuta) uguale ad UN NUMERO.

Quindi per confrontare "de" con un numero,

come è quello che si usa per rappresentare una decina

"de" DEVE ESSERE CONVERTITO NEL SUO VALORE.

:)
 
Ultima modifica:
Ciao Eugenio.

Non so, se sia del VbScript o del VisualBasic,

Penso più dello script ...

anche se è presente in molte versioni del basic

Ovvero non so a quale "livello" venga eseguita, questa procedura.

Tuttavia, se proverai a togliere quella "istruzione",

probabilmente, lo script, smetterà di funzionare.

:)
 
Ultima modifica:
Ho provato a toglierla e difatti lo script non funziona . Comunque ho capito che eval converte un carattere stringa in uno numerico .
Unaltro problema che da lo script e che se cambio la funzione cadenza con la funzione decinanaturale o decina lo script si comporta in modo anomalo . Per quale motivo ?

Ciao Eugenio
 
Ciao Eugenio,

per sommi capi ... le cabale come decina / cadenza / figura / gemello ... vertibile / zerato ...

credo siano tra "le cose" più vecchie ad essere state scritte e pertanto esse sono anche le più collaudate.

Dubito ci possano essere errori presenti nei programmi dopo decine di anni di correzioni e revisioni.

Quindi molto più probabilmente hai sbagliato qualcosa nei tuoi script.

Per esempio le decine cabalistiche e naturali sono per definizione diverse tra loro.

Altrimenti sarebbero la stessa cosa!

Alcuni gruppi hanno bisogno di "10" elementi per contenerli, altri solo 9 ... o anche meno.

Quindi anche questa deve essere "sperimentazione" (e/o DEBUG) degli script,

che devi vederti di caso in caso.

Risolvendo di volta in volta, gli errori, che creano risultati non congrui,

alla ricerca, che volevi effettuare.

:)
 
Ultima modifica:
Se sostituisco le seguenti righe dello script

If Cadenza(Estratto(es,r,p)) = eval(de)Then

If Cadenza(casi) = 0 Then ColoreTesto 2 Else ColoreTesto 0

If Cadenza(casi) = 0 Then cc = 0

Con queste


If DecinaNaturale(Estratto(es,r,p)) = eval(de)Then


If DecinaNaturale (casi) = 0 Then


If DecinaNaturale(casi) = 0 Then cc = 0



In uscita ho :

Codice:
 Per Genios : somma  Cadenza per la sorte minima di ambo(Cinzia) 
     
 estr.                       somma rit.    casi                ritardi  
 4311 RO   48.31.36.26.16           0        1                    2  
 4329 RO   32.40.21.63.77           0        2                    18  
 4338 RO   03.10.11.35.31           0        3                    9  
 4344 RO   59.40.37.50.39           0        4                    6  
 4346 RO   68.39.65.40.38           0        5                    2  
 4350 RO   30.88.61.39.34           0        6                    4  
 4353 RO   32.37.43.12.47           0        7                    3  
 4362 RO   37.32.71.62.52           0        8                    9  
 4380 RO   39.56.35.08.38           0        9                    18  
 4388 RO   75.39.34.74.15           0       10                    8  
 4405 RO   33.50.23.35.42          17       11                    17  
 4409 RO   86.36.40.45.90          21       12                    4  
 4411 RO   10.55.39.36.86          23       13                    2  
 4420 RO   21.37.34.18.82          32       14                    9  
 4462 RO   44.38.42.35.28          74       15                    42  
 4467 RO   03.33.16.84.34          79       16                    5  
 4482 RO   05.32.30.34.23          94       17                    15  
 4508 RO   39.22.38.85.41         120       18                    26  
 4553 RO   63.39.40.15.66         165       19                    45  
 4557 RO   54.81.26.39.32         169       20                    4  
 4562 RO   31.40.56.44.42         174       21                    5  
 4563 RO   54.40.89.35.20         175       22                    1  
 4576 RO   03.39.17.31.88         188       23                    13  
 4577 RO   76.37.18.32.26         189       24                    1  
 4584 RO   35.23.40.71.19         196       25                    7  



 Invece di questa   
     
     
 Per Genios : somma  Cadenza per la sorte minima di ambo(Cinzia)  
     
 estr.                       somma rit.    casi                ritardi  
 4316 RO   28.14.13.63.19           7        1                    7  
 4327 RO   10.15.63.37.53          18        2                    11  
 4328 RO   83.89.59.69.73          19        3                    1  
 4347 RO   73.74.61.03.09          38        4                    19  
 4368 RO   18.63.21.31.53          59        5                    21  
 4375 RO   42.63.33.78.69          66        6                    7  
 4376 RO   13.83.50.85.75          67        7                    1  
 4392 RO   43.52.50.73.54          83        8                    16  
 4405 RO   33.50.23.35.42          96        9                    13  
 4408 RO   04.23.73.31.87           0       10                    3  
 4416 RO   51.43.14.15.33           8       11                    8  
 4423 RO   68.83.07.50.73          15       12                    7  
 4440 RO   13.60.73.54.39          32       13                    17  
 4454 RO   43.74.65.33.41          46       14                    14  
 4467 RO   03.33.16.84.34          59       15                    13  
 4475 RO   89.63.44.73.05          67       16                    8  
 4495 RO   13.43.62.33.70          87       17                    20  
 4516 RO   70.73.63.56.12         108       18                    21  
 4522 RO   48.53.15.71.73         114       19                    6  
 4529 RO   16.73.13.14.15           0       20                    7  
 4541 RO   23.87.77.73.58          12       21                    12  
 4551 RO   43.48.22.08.13          22       22                    10
 
Ciao Eugenio.

Se si può o se si deve assumere per vero che, lo script,

dopo le innumerevoli modifiche non funziona più ...

e che tu, ne hai le capacità, ti conviene redigere un progetto Ex-Novo.

Perchè se continui a lavorare su uno script ove già ci sono errori,

o sono stati introdotti errori,

è improbaile che, introducendo altre e nuove condizioni,

gli errori si correggano "per caso" o per una "botta di fortuna".

Specie se essi vanno ad interessare "la struttura"

e non semplici "test condizionali" di minore importanza.

Oppure in alternativa devi studiarti "per bene" lo script,

e poi intevenire su esso con "correzioni ed aggiustamenti"

molto "ben orientati a risolvere" sia i problemi esistenti

che ad introdurre le nuove metodologie di ricerca.

Ma questa, a parer mio ... è soluzione molto più difficile.

Cioè quella che ti obbliga a chiedere aiuto.

Va da se ... che "somma ritardi" e "DecinaNaturale"

cioè il "Titolo" dello script non ha più nulla

a che fare con il suo contenuto: "Cadenza" ... in ... "10 Estrazioni".

Questo è già un "ingarbuglio" che non indirizza ad una soluzione lineare.

:)
 
Ultima modifica:
Ora ho capito per far funzionare lo script per le decine naturali occorre cambiare solo il primo if then e lasciare intatto gli altri due sulle cadenze . Dato che questi ultimi non sono riferiti alla ricerca all' interno del' estrazione ma sono riferiti alla cadenza 0 del valore della variabile casi .

If
DecinaNaturale(Estratto(es,r,p)) = eval(de)Then

If Cadenza(casi) = 0 Then ColoreTesto 2 Else ColoreTesto 0

If Cadenza(casi) = 0 Then cc = 0

Codice:
Sub Main()
Scrivi "Per Genios : somma ritardi DecinaNaturale per la sorte minima di ambo(Cinzia)":Scrivi
ColoreTesto 2:Scrivi "estr." & Space(23) & "somma rit. " & Space(3) & "casi" & Space(16) & "ritardi":ColoreTesto 0
de = InputBox("Di quale decina vuoi controllare la somma dei ritardi per ambo?",,3)
r = 8
fin = EstrazioneFin
ini = fin - 5000 - 1
For es = ini To fin
ce = ce + 1
cc = cc + 1
co = 0
Messaggio(es)
For p = 1 To 5
If DecinaNaturale(Estratto(es,r,p)) = eval(de)Then
co = co + 1

If co = 2 Then
casi = casi + 1

If ce < 0 Then
ce = 0
End If
If Cadenza(casi) = 0 Then
ColoreTesto 2
Else

ColoreTesto 0
End If
If Cadenza(casi) = 0 Then
cc = 0
End If
Scrivi es & " " & SiglaRuota(r) & Space(3) & StringaEstratti(es,r) & Space(9) & FormatSpace(cc,3,1) & Space(5) & _
FormatSpace(casi,4,1) & Space(20) & ce
ce = 0
End If
End If
Next
Next
End Sub
 
Ciao Eugenio ...

... con la premessa che se si pone una domanda sbagliata ...

... o si enuncia un qualcosa di sbalgiato ...

ad esse, non si può dare come risposta "giusta" o dire che è giusta se è sbagliata:

Cadenza = Cabala e Casi = Contatatore

Cadenza <> Contatore come Cabala <> Casi.

Quindi se il "Dito" indica la "Luna"

La luna e il dito per sillogismo, non sono la stessa cosa.

ovvero non si contano le lune per sapere quante dita hanno in una mano,

perchè si indica sempre, con l'indice, e si dedurrebbe di avere un solo dito

ovvero, che ci sia una luna sola.

Fin qui potrebbe esere un erroruccio anche se così .. "non si contano" le lune.

Oppure, si deduce che le dita, sono infinite (o quasi) o variabili,

quante sono le lune che si sono contate.

Quindi ... mi sa che si sia fatta, un pò di caciara!

:)
 
Ultima modifica:
genios;n2061594 ha scritto:
Ora ho capito per far funzionare lo script per le decine naturali occorre cambiare solo il primo if then e lasciare intatto gli altri due sulle cadenze . Dato che questi ultimi non sono riferiti alla ricerca all' interno del' estrazione ma sono riferiti alla cadenza 0 del valore della variabile casi .

If
DecinaNaturale(Estratto(es,r,p)) = eval(de)Then

If Cadenza(casi) = 0 Then ColoreTesto 2 Else ColoreTesto 0

If Cadenza(casi) = 0 Then cc = 0


CADENZA, come qualunque altra cabala NON SI APPLICA AL VALORE numerico di un "contatore".

Questo "ESSENDO UN NUMERO" ... se ne frega del lotto,

con il quale non ha nulla a che vedere.

Quando ti dicono è stato estratto il numero xyz, ti stanno fregando.

Quello non è un numero.

Esattamente come se ti dicessero che per contare le dita di una mano,

devi aspettare che passino "5 lune", cioè "5 cose", che non c'entrano niente!

Le dita della mano saranno 5 (si spera) anche quando saranno passate solo 4 lune.

Rimangono 5 (si spera) anche dopo cento lune.

Quindi "cinquina" è una cabala 5 è un munero.

NON DEVO CALCOLARE la "cadenza di zero" per avere "zero".

Zero è Zero, come UNO è UNO, come .... infinito = infinito

indipendentemente dalla "cabala" che "gli applico".

Semmai ... ottengo "False" se a questi numeri, APPLICO "una cabala sbagliata".

Cioè una cabala ... MOLTO sbagliata,

non fa funzionare uno script dove, un valore numerico,

istituito per altro, viene trasformato in cabala.

Se FUNZIONA è PER SBAGLIO.

Cioè, come si diceva ... ad una domanda "sbagliata"

non si può rispondere "è giusto" !

:)
 
Ultima modifica:
Joe ma che centra la cabala . Cinzia ora che ho studiato un po lo script di cui sopra ha usato un artificio .Nel senso che usando la funzione Cadenza applicata alla variabile casi ha fatto una sorte di contatore quando la variabile casi si incrementa da 1 fino a 10 solo al numero 10 la condizione è rispettata infatti il 10 e di cadenza 0 . Quindi somma i 10 ritardi consecutivi . Anche se poi fa la somma per 9 ritardi consecutivi perche il 10 ritardo sfugge al controllo( è qui ce l' errore ) .

Ciao Eugenio
 
Ciao Eugenio

Anche Cinzia non centra "nulla".

E' molto precisa e molto brava.

Lo script, potrebbe anche essere mio, che ne ho scritti, sia per lei, che assieme a lei.

Sia molti anni fa, come recentemente.

Quindi si, dello script, ora che lo sai ... sai cosa fa. Come lo fa.

Ma avevi utilizzato e sostituito la stessa "cabala" sia alla selezione dei numeri che al contatore.

"Questa cosa" però la vedono, solo coloro che si applicano nello studiare lo script.

Gli altri, tra un titolo fuorviante, errori, trucchi, (che a me piacciono) non ci capiscono più nulla!

Inoltre, la ricerca ciclica, è sempre molto "delicata".

Anche e già solo, nell' intendere di essa, cosa si rappresenta, con il "10° ritardo".

Dunque è per questa ragione che ti consigliavo di sperimentare "da te" ...

che ne hai la capacità, perchè, chiunque altro, potrebbe mal-interpretare

o disinterpretare ... cosa scrivi o cosa vorresti "veder scritto".

:)
 
Ultima modifica:
Primo caso Risolto

Codice:
Sub Main()
    Dim ritardi,sommaritardi,casi,presenzanumeri
    Scrivi "Per Genios : somma ritardi Cadenza per la sorte minima di ambo(Cinzia)":Scrivi
    ColoreTesto 2:Scrivi "estr." & Space(23) & "somma rit. " & Space(3) & "casi" & Space(16) & "ritardi":ColoreTesto 0
    de = InputBox("Di quale cadenza vuoi controllare la somma dei ritardi per ambo?",,3)
    r = 8
    fin = EstrazioneFin
    ini = fin - 5000 - 1
    For es = ini To fin
        ritardi = ritardi + 1
        sommaritardi = sommaritardi + 1
        presenzanumeri = 0
        Messaggio(es)
        For p = 1 To 5
            If Cadenza(Estratto(es,r,p)) = eval(de)Then
                presenzanumeri = presenzanumeri + 1
                If presenzanumeri = 2 Then
                    casi = casi + 1
                    If casi = 10 Then
                    ColoreTesto 2
                    Else
                    ColoreTesto 0
                    End If
                    Scrivi es & " " & SiglaRuota(r) & Space(3) & StringaEstratti(es,r) & Space(9) & FormatSpace(sommaritardi,3,1) & Space(5) & _
                    FormatSpace(casi,4,1) & Space(20) & ritardi
                    ritardi = 0

                    If casi = 10 Then
                        casi = 0
                        sommaritardi = 0
                    End If
                End If
            End If
        Next
    Next
End Sub

img096 (FILEminimizer).jpg
 

Allegati

  • img097 (FILEminimizer).jpg
    img097 (FILEminimizer).jpg
    23,1 KB · Visite: 1
Ciao a Tutti! Solo per curiosità, se a questa riga sotto avessi aggiunto prima di InputBox - CInt - ci sarebbe stato bisogno di Eval?

de = InputBox("Di quale decina vuoi controllare la somma dei ritardi per ambo?",,3)

Volevo fare un altra domanda a Joe, ma se io in - InputBox - scrivo un numero, perchè lo script non lo vede come un numero?
 
Ultima modifica:
Da quanto ho capito dalla spiegazione di Joe Input Box restituisce una stringa di testo quindi considera i numeri come un qualsiasi carattere occorre quindi convertirlo in carattere numerico come tu hai ben detto con la funzione CInt (tipo Integer).

Codice:
Sub Main()
    Dim ritardi,sommaritardi,casi,presenzanumeri
    Scrivi "Per Genios : somma ritardi Cadenza per la sorte minima di ambo(Cinzia)":Scrivi
    ColoreTesto 2:Scrivi "estr." & Space(23) & "somma rit. " & Space(3) & "casi" & Space(16) & "ritardi":ColoreTesto 0
    de = InputBox("Di quale cadenza vuoi controllare la somma dei ritardi per ambo?",,3)
    r = 8
    fin = EstrazioneFin
    ini = fin - 5000 - 1
    For es = ini To fin
        ritardi = ritardi + 1
        sommaritardi = sommaritardi + 1
        presenzanumeri = 0
        Messaggio(es)
        For p = 1 To 5
            If Cadenza(Estratto(es,r,p)) = CInt (de) Then
                presenzanumeri = presenzanumeri + 1
                If presenzanumeri = 2 Then
                    casi = casi + 1
                    If casi = 10 Then
                    ColoreTesto 2
                    Else
                    ColoreTesto 0
                    End If
                    Scrivi es & " " & SiglaRuota(r) & Space(3) & StringaEstratti(es,r) & Space(9) & FormatSpace(sommaritardi,3,1) & Space(5) & _
                    FormatSpace(casi,4,1) & Space(20) & ritardi
                    ritardi = 0

                    If casi = 10 Then
                        casi = 0
                        sommaritardi = 0
                    End If
                End If
            End If
        Next
    Next
End Sub[/SIZE]


[SIZE=10px]
 
Ultima modifica:
Ciao Salvo.

In linea generale sarebbe bene stabilire "il tipo di dato"

che ogni variabile deve contenere.

Sia per avere un minore uso di memoria,

sia per mantenere lo script più veloce ed ordinato.

Cint converte ad Intero.

Eval valuta.

Se il "dato-contenuto" non è numero Cint produce Errore,

dunque Cint è una istruzione un pò più "delicata".

Cint è già, un più specifica ... per i numeri.

Per il resto della domanda, non conosco il perchè, di queste regole.

Suppongo che l' nputbox, così, possa accettare "di più",

ovvero, il più possibile lasciando poi al programmatore,

il compito di selezionare, filtrare, adattare, convertire,

e poi, naturalmente, scartare, tutti gli imput "inidonei" al contesto.

Per questa ragione, amo-poco, gli script fatti di molti inputbox ...

che con le loro "mille domande", spesso poi, non gestite e/o mal interpretate,

finiscono per calcolare cose piuttosto diverse da quelle

di cui si vorrebbero i risultati.

Più genericamente introducono e producono errori ... difficilmente individuabili.

Codice:
Option Explicit
Sub Main
Dim A,B,C
A = "3.1"
B = "4 "
C = "C"
Scrivi A + B + C
Scrivi CInt(A + B)
Scrivi Eval(A + B)
Scrivi Eval(C)
'Scrivi Int (C) 'produce errore
Scrivi Eval (A) + Eval (B)
Scrivi Int (A) + Int (B)
End Sub
 
Ultima modifica:
Ciao Joe!

Grazie, anche a Genios, rimetto lo scriptino, con qualche commento in più, per qualche dobbio che ancora mi è rimasto.

Codice:
 Option Explicit
Sub Main
Dim A,B,C
A = "3.1"
B = "4 "
C = "C" ' appurato che A,B,C non sono numeri
Scrivi A + B + C  
Scrivi CInt(A + B) ' qui non capisco perchè non va in errore   
Scrivi Eval(A + B)
Scrivi Eval(C)
'Scrivi Int (C) 'produce errore
Scrivi Eval (A) + Eval (B)
Scrivi Int (A) + Int (B) ' qui non capisco perchè da 35
End Sub
 
Ciao Salvo.

non mi risulta 35 tra i risultati.


Codice:
Option Explicit
Sub Main
	Dim A,B
	A = "3.1"
	B = "4 "
	Scrivi "A = " & A
	Scrivi "B = " & B
	Scrivi "A + B  = " & A + B
	Scrivi
	Scrivi "Int (A) =  " & Int(A)
	Scrivi "Int (B) =  " & Int(B)
	Scrivi "Int (A) + Int (B) = " & Int(A) + Int(B)
	Scrivi
	Scrivi "Eval (A) =  " & Eval(A)
	Scrivi "Eval (B) =  " & Eval(B)
	Scrivi "Eval (A) + Eval (B) = " & Eval(A) + Eval(B)
	Scrivi
	Scrivi "CInt(A + B) = " & CInt(A + B)
	Scrivi "Eval(A + B) = " & Eval(A + B)
End Sub

:)
 
Ultima modifica:
Allora è un difetto del mio computer perchè questo è quello che mi appare nell'output dopo aver lanciato lo scriptino

3.14
C
314
3,14
C
7,1
35
e questo è quello che mi appare con il secondo scriptino
A = 3.1
B = 4
A + B = 3.14
Int (A) = 31
Int (B) = 4
Int (A) + Int (B) = 35
Eval (A) = 3,1
Eval (B) = 4
Eval (A) + Eval (B) = 7,1
CInt(A + B) = 314
Eval(A + B) = 3,14

c'è sempre quel 35
 
Ultima modifica:

Ultima estrazione Lotto

  • Estrazione del lotto
    sabato 18 gennaio 2025
    Bari
    24
    76
    02
    72
    12
    Cagliari
    21
    08
    77
    04
    17
    Firenze
    74
    84
    07
    12
    72
    Genova
    13
    07
    33
    47
    18
    Milano
    01
    34
    09
    55
    48
    Napoli
    46
    23
    25
    03
    06
    Palermo
    44
    07
    01
    46
    84
    Roma
    88
    78
    64
    74
    04
    Torino
    07
    87
    67
    38
    53
    Venezia
    31
    25
    04
    18
    02
    Nazionale
    49
    82
    59
    65
    67
    Estrazione Simbolotto
    Bari
    03
    13
    31
    23
    35

Ultimi Messaggi

Indietro
Alto