Novità

NUOVO AMBIENTE SCRIPT AREA TECNICA

Rookie

Advanced Member >PLATINUM PLUS<
Vi seguo. Domani provo ad installare twin basic.
Buona fisioterapia Rookie . :)👍
Grazie caro Legendario, come vedi nelle tue ambasce non sei solo! Mi fa molto piacere che ti sei aggregato per fare qualcosa di sfidante, utile e nuovo, e spero ci darai "la tua mano" (compatibilmente con la nostra salute) dato che il lavoro da fare e' tanto, padroneggiare il nuovo ambiente tB e sopratutto trovare i modi migliori per convertire gli scripts nascondendo la loro complessita' sottostante...
 
L

LuigiB

Guest
del post 46 mi sembra di aver capito... che ci sono funzioni o codici non raggiungibili dall'utente finale e interpretate e usate per così dire solo da un inteprete macchina "intermedio"... 😶
Il grafico è una rappresentazione vista dall'alto dell'architettura del progetto

c' è un programma scritto dall'utente finale
il programma scritto dall'utente finale consuma , ovvero adopera , le funzionalita esposte dalla libreria percio si chiama consumer, come esistono decine se non centinaia di script per spaziometria , potreanno esistere decine e centinaia di ScriptTwinbasic

c'è una librereria dll che espone delle funzionalità al suddetto programma tramite un oggetto che si chiama ClsScript
la libreria si chiama libreria proprio perche come una libreria vera che contiene libri questa qui contiene una serie di funzioni, il suo utilizzo consente
di sollevare chi la utilizza da compiti rpetitivi o difficili permettendo di concentrarsi solo sulla logica del proprio script/progetto

ci sono delel classi e dei moduli interni alla dll che svolgono li compiti sottostanti
Per svolgere le attività operative sottostanti alle funzioni esposte come tutti i programmi anche la dll è organizzata in classi , moduli , form
queste cose l'utente finale (quello che scriverà lo script) non le vede


grazie ho provato a sostituire l' archivio , usando le avvertenze , e' funziona.
ma tra la data e l' ora occorre lasciare uno spazio vuoto o anche altro separatore ?
che tipo di formato data e ed eventuale ora viene accettato ?

Il campo data è un campo Data ora , lo spazio è necessario , internamente l'archivio memorizzerà la data con l'apposito tipo di varibile
di tipo "Date"


Buongiorno Luigi, penso che in ordine alla politica gestionale di questo nostro progetto ci siano delle cose di cui discutere a due voci e quattro occhi. Da quanto ho cominciato a vedere siamo gia' nella situzione in cui non volevi trovarti...da solo.
Chiedi al nostro amico comune, il buon @silop2005 che saluto cordialmente, come fare per i riferimenti propedeutici a comunicazioni via whatsapp... dunque spero ti sentirti al piu' presto, ho solo un problema di momentanea indisponibilita' oggi per una mezzoretta dalle 12:00 in avanti, per via della mia dolorosa sessione di fisioterapia riabilitativa...
Aspetto con piacere un tuo cenno di rinnovata intesa
Ciao

:)

p.s. credi che il problema della funzione split sia come sembra su discord :sneaky: solo un problema di localizzazione?

Io direi di organizzarci tramite MicrosoftTeams , cosi quando necessario ci faremo una bella riunione online come va di moda da qualche anno , ma ora è ancora presto ,e soprattutto non voglio dare l'impressione di escludere nessuno , siamo in una fase preliminare e dobbiamo prima vedere chi vuole partecipare , chi vuole partecipare attivamente potra essere coinvolto in futuri meeting online.

Ripeto il progetto non so se avrà una sua effettiva concretizzazione , dipende soprattutto da voi , non sono geloso del codice ,a parte che se io stesso a mia volta non avessi potuto usufruire nel tempo degli aiuti che si trovano nel web ora non saprei fare le cose che so c'è anche da dire che nel progetot abbiamo solo uno scheletro e 2 funzioni implementate quindi per ora niente di speciale ..

Anche io ti faccio un augurio per la terapia a cui devi sottoporti ,.. quindi un grosso in bocca al lupo.





in giornata nel pomeriggio mettero l'ultimo file zip quello che contien un esempio di progetto consumer della dll , forse anche un breve video di max 5 minuti per spiegare a voce qualcosa ..

la roadmap prevde innanzi tutto di familiarizzare conm questo ambiente di TwinBasic che è davvero molto interessante , è superiore al vb6 e certamente consentirà di scrivere script piu articolati , veri e propri programmi che in quanto compilati andranno anche molto piu veloci oltre ad avere anche la possibilita di fare i ldebug del proprio script molto utile per gli script piu complessi

Familiarizzeremo con TwinBasic mediante la modifica evolutiva del progetto Consumer (quello che mettero stasera) che per ora è semplicissimo , ma lo evolveremo un pochino e cosi facendo vedremo come si usa TwinBasic.
Chi conosce gia gli script , ha gia chiari i concetti fondamentali basilari della programmazione , il concetto di variabile , le sub , le function , i costrutti condizionali , i cicli .. quindi posso garantire che si parte avvantaggiati

buona giornata a tutti
 

Xeroxs

Advanced Member >PLATINUM<
Ciao,
Ho installato tutto come da descrizione e successivi aggiornamenti, volevo chiedere una cosa ho scaricato il programma composto da 3 file come da immagine io ho solo installato il primo, gli altri servono o no in quanto non so come gestirli.

Twin.jpg

Poi volevo chiedeRti solo un chiarimento nel termine Run intendi aprire il programma o agire su un tasto esempio quello nei menù in alto nella tool del programma, forse è una domanda stupida ma e per capire anche in futuro il linguaggio cin cui familiarizzzare.

Premetto che ho fatto quanto da te scritto ed il programma si apre senza problemi.
Grazie.
 

Rookie

Advanced Member >PLATINUM PLUS<
Ciao,
Ho installato tutto come da descrizione e successivi aggiornamenti, volevo chiedere una cosa ho scaricato il programma composto da 3 file come da immagine io ho solo installato il primo, gli altri servono o no in quanto non so come gestirli.

Vedi l'allegato 2251509

Poi volevo chiedeRti solo un chiarimento nel termine Run intendi aprire il programma o agire su un tasto esempio quello nei menù in alto nella tool del programma, forse è una domanda stupida ma e per capire anche in futuro il linguaggio cin cui familiarizzzare.

Premetto che ho fatto quanto da te scritto ed il programma si apre senza problemi.
Grazie.
E‘ sufficiente quanto hai già installato! Uso anch‘io la stessa beta dell‘ambiente di sviluppo. Hai già quello che serve, se ti va di prendere confidenza con tB. Puoi anche provare a crear qualcosa di diverso dagli scripts Lotto…
Buon proseguimento
 
Ultima modifica:

joe

Advanced Member >PLATINUM PLUS<
Buongiorno a tutte/i.

Per ora devo accontentarmi di leggere quanto scrivete, perchè il mio PC,

pur nuovo è guasto e non si accende nemmeno.

Se ruiscirò a recuperare ... partecipeò un pò più attivamente!

:) Buona continuazione.
 
L

LuigiB

Guest
Intanto un benvenuto a Joe , spero in una sua fattiva collaborazione come del resto per gli altri :)

Vi posto il file contenete il progetto consumer della dll ,

Come al solito scompattate i lfile nella cartella che vi siete gia creati e che contiene gli altri progetti.

in pratica si tratta di quel programma da cui partire ogni volta che si voglia fare un nuovo script. Un template come si dice in gergo.

Quindi ogni volta che uno vuole fare un nuovo script prende questo file lo copia , gli cambia nome dando un nome consono come si fa per gli script di spaziometria poi lo apre con twinbasic e inizia a scrivere il suo codice dello script.

rispondo a chi aveva chestocosa vul dire mandare in run
mandare in run un progertto significa eseguirlo nell'ambiente di sviluppo per poterlo debbuggare , compilare il progetto invece produce un file binario sia esso un exe oppure una dll. Per mandare in run il progeto si preme il tasto "PLAY" come quello dei mangianastri :)
1674217462029.png


A differenza degli altri due progetti (quello della dll di produzione e quello della dll di debug) questo progetto qui si presenta molto piu semplice con molti meno file proprio perche tutte le funzioni sono racchiuse nella dll

La dll è un file binario a parte e che è referenziata nel progetto , percio è importante che abbiate compilato la dll come ho detto al post 33 mi pare.

andando in settings infatit se tutto è ok si vede la referenza alla dll

1674218739563.png



se vediamo il project explorer vediamo i file che ci sono

1674217605355.png


ci sono 1 form + 2 moduli , se notate ci sono due sottocartelle che si chiamano Form e Moduli
le ho aggiunte per organizzare meglio i file del progetto.

comprimendo le cartelle Form e Moduli vediamo che rimane fuori un solo file

1674217765236.png

Rimane fuori solo il file denominato MyScript.twin , e rimane fuori pèerchè è l'unico file con il quale lo scripter deve interagire , e quello che infatti contiene lo script vero e proprio , come la famosa sub Main di spaziometria.

infatti se lo apriamo per vederne il codice vediamo che oltre alla valorizzazione dei parametri indispensabili c'è solo il nostro script

1674217906586.png


mandando in run il progetto dovrebbe mostrare lo stesso risultato che abbiamo visto nel precedente progetto della dll di debug.

provate a mandarlo in run e vedete se funziona , attenzione prima di eseguire le prove dovete aver compilato la dll di produzione come avevo spiegato in precedenza

ora analizziamo i file che compongono il progetto.

il form contiene solo un pulsante

1674218061159.png

l'unica procedura implementata ( vuol dire quella che contiene codice scritto da noi ) è quella del click sul pulsante , quando uno fa click il pulsante richiama la procedura e come vedete esegue la Sub Lanciascript , qui lo scripter non dve fare niente , la stiamo solo analizzando

1674218126199.png


ora clicccando col destro sul nome della sub si puo accedere al suo codice selezionando la prima voce

1674218244383.png


se lo facciamo ci porta nel modulo che contiene la procedura cosi la possiamo vedere per sapere cosa fa
e infatti ci accorgiamo che inizializza la dll con i parametri voluti , se ci riesce poi esegue lo script senno da un messaggio

1674218303262.png

con lo stesso sistema potremo andare a vedere il contenuto della funzione InitTBGiochiScript , giusto per curiosare cosa faccia ma ripeto in queste procedure non va cambiato nulla , fann oparte del template e non c'è bisogno di cambiarle.



Dopo aver parlato della form ci rimane da descrivere solo a cosa serve il modulo ModWrapperDll , dato che è scritto nel commento non lo ripeto qui
apritelo per analizzare il codice


1674218407651.png



ora provate a studarvi il funzionamento di quanto ho messo a disposizione
 

Rookie

Advanced Member >PLATINUM PLUS<
Intanto un benvenuto a Joe , spero in una sua fattiva collaborazione come del resto per gli altri :)

Vi posto il file contenete il progetto consumer della dll ,

Come al solito scompattate i lfile nella cartella che vi siete gia creati e che contiene gli altri progetti.

in pratica si tratta di quel programma da cui partire ogni volta che si voglia fare un nuovo script. Un template come si dice in gergo.

Quindi ogni volta che uno vuole fare un nuovo script prende questo file lo copia , gli cambia nome dando un nome consono come si fa per gli script di spaziometria poi lo apre con twinbasic e inizia a scrivere il suo codice dello script.

rispondo a chi aveva chestocosa vul dire mandare in run
mandare in run un progertto significa eseguirlo nell'ambiente di sviluppo per poterlo debbuggare , compilare il progetto invece produce un file binario sia esso un exe oppure una dll. Per mandare in run il progeto si preme il tasto "PLAY" come quello dei mangianastri :)
Vedi l'allegato 2251516


A differenza degli altri due progetti (quello della dll di produzione e quello della dll di debug) questo progetto qui si presenta molto piu semplice con molti meno file proprio perche tutte le funzioni sono racchiuse nella dll

La dll è un file binario a parte e che è referenziata nel progetto , percio è importante che abbiate compilato la dll come ho detto al post 33 mi pare.

andando in settings infatit se tutto è ok si vede la referenza alla dll

Vedi l'allegato 2251527



se vediamo il project explorer vediamo i file che ci sono

Vedi l'allegato 2251517


ci sono 1 form + 2 moduli , se notate ci sono due sottocartelle che si chiamano Form e Moduli
le ho aggiunte per organizzare meglio i file del progetto.

comprimendo le cartelle Form e Moduli vediamo che rimane fuori un solo file

Vedi l'allegato 2251518

Rimane fuori solo il file denominato MyScript.twin , e rimane fuori pèerchè è l'unico file con il quale lo scripter deve interagire , e quello che infatti contiene lo script vero e proprio , come la famosa sub Main di spaziometria.

infatti se lo apriamo per vederne il codice vediamo che oltre alla valorizzazione dei parametri indispensabili c'è solo il nostro script

Vedi l'allegato 2251519


mandando in run il progetto dovrebbe mostrare lo stesso risultato che abbiamo visto nel precedente progetto della dll di debug.

provate a mandarlo in run e vedete se funziona , attenzione prima di eseguire le prove dovete aver compilato la dll di produzione come avevo spiegato in precedenza

ora analizziamo i file che compongono il progetto.

il form contiene solo un pulsante

Vedi l'allegato 2251520

l'unica procedura implementata ( vuol dire quella che contiene codice scritto da noi ) è quella del click sul pulsante , quando uno fa click il pulsante richiama la procedura e come vedete esegue la Sub Lanciascript , qui lo scripter non dve fare niente , la stiamo solo analizzando

Vedi l'allegato 2251521


ora clicccando col destro sul nome della sub si puo accedere al suo codice selezionando la prima voce

Vedi l'allegato 2251524


se lo facciamo ci porta nel modulo che contiene la procedura cosi la possiamo vedere per sapere cosa fa
e infatti ci accorgiamo che inizializza la dll con i parametri voluti , se ci riesce poi esegue lo script senno da un messaggio

Vedi l'allegato 2251525

con lo stesso sistema potremo andare a vedere il contenuto della funzione InitTBGiochiScript , giusto per curiosare cosa faccia ma ripeto in queste procedure non va cambiato nulla , fann oparte del template e non c'è bisogno di cambiarle.



Dopo aver parlato della form ci rimane da descrivere solo a cosa serve il modulo ModWrapperDll , dato che è scritto nel commento non lo ripeto qui
apritelo per analizzare il codice


Vedi l'allegato 2251526



ora provate a studarvi il funzionamento di quanto ho messo a disposizione
Hai (Anche) talento come tutor! Secondo me, caro Luigi, ti sei davvero innamorato e non credo proprio che possa essere un fuoco fatuo :sneaky:(y)

Sto pascolando in discord per cercare dritte al fine di maneggiare più‘ efficacemente il Grid, prima o poi ci servirà…

Cosí il dolore morde ma la sua percezione é meno intensa! Bravo Luigi, complimenti per la passione che ti anima e ti sostiene nelle tue azioni concrete.
 
Ultima modifica:
L

LuigiB

Guest
Grazie dei complimenti Rookie ... pero io sono un tutor severo chiedi a LottoTom e al caro Claudio :) .. a parte gli scherzi cercate di capirci qualcosa , dove non capite domandate.


Io sto per proporre il primo question time.

prendendo spunto ad esempio dalla funzione Estratto , come si dovrebbe fare se uno volesse inserire una funzione DataEstrazione e con i parametri IdEstrazione obbligatorio e idArchivio opzionale di default 0 affinche questa funzione sia esposta al consumer ?


questo il codice che dovrebeb funzionare una volta che è implementata la funzione richiesta


MsgBox "LA data dell'ultima estrazione disponibile numero " & c.EstrazioniArchivio & " è " & c.DataEstrazione (c.EstrazioniArchivio)

ATTENZIONE :
le modifiche vanno fatte nel progetto dll di debug. Solo uan volta verificate e funzionanti andrannoriportate nella dlll e ricompilata la stessa
 

i legend

Premium Member
Se le estrazioni sono impostate come un vettore lo richiamo
L idestrazione è l indice si splitta la riga e dataestrazione restituisce la colonna impostata nella funzione
Almeno farei così con spaziometria.
Domani provo a scaricare tutto e cerco di tenermi al passo.
Se ho scritto una stupidaggine chiedo venia.🫣
 

Rookie

Advanced Member >PLATINUM PLUS<
Grazie dei complimenti Rookie ... pero io sono un tutor severo chiedi a LottoTom e al caro Claudio :) .. a parte gli scherzi cercate di capirci qualcosa , dove non capite domandate.


Io sto per proporre il primo question time.

prendendo spunto ad esempio dalla funzione Estratto , come si dovrebbe fare se uno volesse inserire una funzione DataEstrazione e con i parametri IdEstrazione obbligatorio e idArchivio opzionale di default 0 affinche questa funzione sia esposta al consumer ?


questo il codice che dovrebeb funzionare una volta che è implementata la funzione richiesta


MsgBox "LA data dell'ultima estrazione disponibile numero " & c.EstrazioniArchivio & " è " & c.DataEstrazione (c.EstrazioniArchivio)

ATTENZIONE :
le modifiche vanno fatte nel progetto dll di debug. Solo uan volta verificate e funzionanti andrannoriportate nella dlll e ricompilata la stessa
Caro Luigi, mi fa piacere SE sarai severo ed esigente :) solo a questa maniera si finisce per aver il meglio possibile! Comunque, pur sapendo che avrai gia trovato il modo di aggirare il problema della funzione Split(), ho indagato sul motivo per cui non funziona col carattere ; (punto e virgola)... Secondo me cio' e' dovuto, con ogni probablita' a come viene in memoria rappresentato il carattere da matchare con il dato della variabile (o di cio' che si trova memorizzato per esempio sul file. E' un problema di codica dei caratteri, come UTF-8 oppure, nei casi di prospettive di mercato internazionali (e' il caso di tB), codificando con UNICODE nel sorgente che va in conflitto con il codice che produce il tasto di una tastiera nazionalizzata, quindi probabilmente genera una rappresentazione codificata in modo diverso.

Questo spiega il perche' quando mi hai scritto di provare a riprodurre il problema, ed io stavo usando la tastiera tedesca non dava alcun errore ma non visualizzava nulla, come fosse una stringa vuota, eppero' quando mi e' venuto il dubbio e ho cambiato la tastiera, usandone una con layout italiano... l'errore si e' materializzato.

Detto questo, il modo piu' semplice per aggirare il problema e' convertire il separatore dei dati su disco, Invece del punto e virgola ci sono almeno 7 opzioni, tutte perfettamente funzionanti - * + | blank ovvero ascii 32 . , per evitare dubbi li chiamo per nome rispettivamente meno, asterisco, segno +, barra verticale, spazio, punto, virgola
Quello piu' logico tra questi come separatore sarebbe la virgola, spesso usata come separatore nei csv...
A te la scelta, sappi comunque che ho cotruito una funzione, AlternativaSplit() che legge il tuo file in modalita' binaria', quindi una sola stringa con tutte le estrazione dentro, da cui si popola una struct, con tutti i campi, e relativamente agli ultimi 55 valori, salvati direttamente in memoria come valori interi. Caricando appena prima di visualizzare il form (main), tutto questo avviene in meno di 350 millisecondi (sul laptop di mia moglie) per un totale di 6237 estrazioni, ovvero dalla prima del 1945 fino all'ultima disponibile.

Spero di essere stato utile...


ps. ho provato a connettermi col forum prima, e per parecchie ore finiva per annullare la richesta al web server per time out. Succedeva anche a voi?
 
Ultima modifica:
L

LuigiB

Guest
ciao Rookie , il problema l'ho sperato altrimenti non funzionerebbe niente di quanto ho postato.
Quindi datevi da fare per dirmi dove in questo progetto si devono fare le modifiche per esporre la funzione DataEstrazione.
 

lotto_tom75

Advanced Premium Member
ciao Rookie , il problema l'ho sperato altrimenti non funzionerebbe niente di quanto ho postato.
Quindi datevi da fare per dirmi dove in questo progetto si devono fare le modifiche per esporre la funzione DataEstrazione.

Maestro Shifu...

20081103c.jpg


dove va messo TestConsumer.twinproj affinchè non dia errore? 😵😵‍💫😱😆

primoerrorediunalunghissimaserie.jpg

gentilmente... 🤤
 
L

LuigiB

Guest
ciao Tom , hai compilato la dll ? questo errore dipende proprio dal fatto che la dll non è registrata , siccome la registra quando la compila mi sa che non lo hai fatto
 

Rookie

Advanced Member >PLATINUM PLUS<
Grazie dei complimenti Rookie ... pero io sono un tutor severo chiedi a LottoTom e al caro Claudio :) .. a parte gli scherzi cercate di capirci qualcosa , dove non capite domandate.


Io sto per proporre il primo question time.

prendendo spunto ad esempio dalla funzione Estratto , come si dovrebbe fare se uno volesse inserire una funzione DataEstrazione e con i parametri IdEstrazione obbligatorio e idArchivio opzionale di default 0 affinche questa funzione sia esposta al consumer ?


questo il codice che dovrebeb funzionare una volta che è implementata la funzione richiesta


MsgBox "LA data dell'ultima estrazione disponibile numero " & c.EstrazioniArchivio & " è " & c.DataEstrazione (c.EstrazioniArchivio)

ATTENZIONE :
le modifiche vanno fatte nel progetto dll di debug. Solo uan volta verificate e funzionanti andrannoriportate nella dlll e ricompilata la stessa
Ho appena sbobinato il file zip e sono andato a vedere ... la tua produzione!
La prima cosa che ho fatto, scusami per questo, ho curiosato per vedere la tua implementazione alternativa ovvero la funzione SPlitX() ...
La seconda, ho guardato la funzione estratto e ti chiedo cortesemente: e' questa (in basso nell'immagine) la funzione Estratto sulle quali dobbiamo ragionare?
Nel frattempo vado a farmi una balconata d'aria fresca(-1 gradi mentre nevica) per godermi una bella sigaretta dopo una levata di Caffe' italiano.


p.s. Non so' se puo' essere a voi utile, ma a me mi sta letteralmente illuminando sul perche' di certe scelte a cui tB si e' dovuto in qualche misura adeguare, e lo hanno fatto brillantemente. Io dovendo, come voi, imparare come funziona il codice di Luigi, attraverso questo libro che ho trovato nella rete scritto dal geniale contestatore di microsoft, Bruce McKinney, quando egli era ancora dipendente microsoft, e non condivideva apertamente il conflitto generato dalla sua azienda nella filosofia di Vb (cfr. nel passaggio dei paramentri alle funzioni) ovvero tra le funzioni scritte in C (che conosco bene) che usa Windows (che conosco poco) e quelle scritte in Vb native ma anche quelle per usare l'API Win32 (che sto imparando ora per usare tB) che vengono chiamate da VB.

Sono due modi assai diversi (passaggio per riferimento e passaggio per valore) per realizzare perfettamente questo splendido conflitto. Io la penso esattamente come l'autore del libro. Perche' a me piace usare i puntatori... Ma questo credo lo capirete piu' avanti... Come diceva il buon Bruce, andiamo avanti la fede verra' !!!

Il libro in questione (edizione in lingua inglese) e' Hardcore Visual Basic Version 5.0 di Bruce McKinney
mi sembra che in italia era stranamente edito da mondadori informatica che pubblicava e traduceva i libri tecnici di Microsoft Press. Altro conflitto di interessi tra autore e software house



Quesito-1.png
 
Ultima modifica:

lotto_tom75

Advanced Premium Member
ciao Tom , hai compilato la dll ? questo errore dipende proprio dal fatto che la dll non è registrata , siccome la registra quando la compila mi sa che non lo hai fatto

l'ho rifatto adesso di compilare la dll... (DLLGiochiScript.twinproj) ma mi da il solito errore quando apro... testconsumer... 🙈

lhorifattoadessomamidailsolitoerrore.jpg
 

rudivall

Advanced Member >PLATINUM<
Un saluto a tutti, certamente con la mia conoscenza sulla compilazione degli script potrò fare molto poco per aiutarvi, però cercherò di fare il possibile per seguirvi....anche per me lo stesso errore di Tom.
 

Ultima estrazione Lotto

  • Estrazione del lotto
    sabato 04 maggio 2024
    Bari
    02
    31
    81
    52
    21
    Cagliari
    39
    88
    84
    01
    67
    Firenze
    36
    30
    70
    06
    41
    Genova
    59
    23
    61
    22
    27
    Milano
    05
    17
    69
    57
    39
    Napoli
    81
    62
    82
    43
    50
    Palermo
    73
    55
    62
    45
    18
    Roma
    76
    70
    01
    64
    15
    Torino
    82
    55
    35
    70
    46
    Venezia
    58
    23
    61
    29
    21
    Nazionale
    10
    14
    01
    43
    09
    Estrazione Simbolotto
    Milano
    30
    01
    05
    32
    11
Alto