Programare in Jaws Scripting, aplicatii practice

Diverse limbaje, programare, scripting, coduri, unelte specifice etc.
Scrie răspuns
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

De Trucker nu se aude chia rnimic, este exact in stadiul in care a fost lasat... Trebuie sa vina cheful brusc si sa fie realizat intr-o mai mare masura, apoi lucrurile vin de la sine, cum e cu Casinoul. Oricum, nu ne grabim, este timp...
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Emanuel.Selaru
Maior
Mesaje: 728
Membru din: 28 Mar 2008, 10:20
Localitate: Buzau

Mesaj de Emanuel.Selaru »

Apropos de scripting Manu, am intampinat o problema in legatura cu Skype-ul. Am instalat si eu 4.2, am luat scripturile de pe site pentru el, le-am instalat, am vazut insa ca ele nu functioneaza mai deloc, JAWS-ul citindu-mi doar statusul meu. Offline, Online, etc. Nu tu mesaje primite/scrise, contacte online, offline, nici numele apelantului. Oare care sa fie problema? Cred ca tine de scripturile vechi ce au ramas in enu, in JAWS. Insa cum sa le identific oare pe cele vechi si sa le separ de cele noi, stergand scripturile anterioare? Am mai sters eu odata multe lucruri, am avut grija totusi sa nu sterg esentialul, insa am sters si fisierul cu setarile pe care le facusem eu in JAWS pe langa scripturile pe care am vrut sa le sterg. In rest, Skype 4.2 imi place mult, sunt mult mai putine lucruri care nu erau noua de folos. Este mult mai accesibil. Te rog Manu sa imi spui daca stii cum pot rezolva aceasta problema.
Multumesc mult.
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Eu nu folosesc Skype, decat pentru cursul de JAWS si pentru a mai vorbi programat cu cate cineva.
Deci... chiar nu stiu deloc cum stau treburile cu scritpurile, poate altcineva de pe aici sa dea vreo indicatie..
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Emanuel.Selaru
Maior
Mesaje: 728
Membru din: 28 Mar 2008, 10:20
Localitate: Buzau

Mesaj de Emanuel.Selaru »

Multumesc mult pentru bunavointa. Folosesc Skype, mai ales de la 4 in sus, pentru ca s-a imbunatatit considerabil calitatea apelurilor, ma refer aici la sunet, acesta fiind cat se poate de real.
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Functie random in JAWS Scripting

Mesaj de Manu »

Pentru ca acum aproximativ o ora s-a incheiat si ultima intalnire in cadrul cursului de JAWS Scripting, cel cu concluziile, pun mai jos o aplicatie practica, cea care, daca este inteleasa, se poate spune ca nivelul de programare este unul bun.

In JAWS Scripting nu exista o functie pentru random si noi am inventat una care sa scoata un numar intre 1 si 6, ca in exemplul de mai jos. Explicatiile suplimentare vor fi dupa cod.
Cert este ca, daca se copiaza tot codul urmator in Script Manager si se compileaza, la combinatia de taste setata se va returna un numar aleatoriu intre 1 si 6, adica exact bun pentru a face un zar virtual:

Inceput cod
Script NumarAleatoriu ()
Var
String sSa,
Int iSa,
String sSf,
Int iSf,
Int iNR,
Int iAleatoriu
Let sSa = SysGetTime ("ss")
Let iSa = StringToInt (sSa)
Let iSf = iSa + 1
Let sSf = IntToString (iSf)
If sSf == "60" Then
Let sSf = "00"
EndIf
Let iNR = 0
While sSa != sSf
Let sSa = SysGetTime ("ss")
Let iNR = iNR + 1
EndWhile
Let iAleatoriu = iNR % 6 + 1
SayInteger (iAleatoriu)
EndScript
Sfarsit cod

Pe scurt, scriptul de mai sus are 6 variabile, cate una de tip string si integer pentru secunda curenta a ceasului si pentru secunda urmatoare, adica secunda curenta plus 1. Celelalte doua variabile sunt de tip integer, una pentru un numar care creste intr-un While cat apuca in decursul a ceea ce a mai ramas din secunda curenta si una pentru numarul aleatoriu final, numar intre 1 si 6.

Procedura parafrazata ar fi urmatoarea:
JAWS se uita cat este secundarul in momentul lansarii scriptului, adica scoate secunda curenta.
Rezultatul este adunat cu 1 pentru a determina secunda urmatoare, adica cea finala in care actiunea scriptului se incheie.
In acest moment se lanseaza un While care, in functie de viteza procesorului, incrementeaza un numar, adica variabila iNR. Aceasta incrementare cu cate unu, face ca variabila iNR sa ajunga la cateva mii sau zeci de mii.
In acelasi timp, la fiecare incrementare cu cate unu, se atribuie variabilei sSa valoarea curenta a secundarului ceasului.
Conditia din While este ca sSa sa nu fie egala cu iSf, adica sa se opreasca incrementarea cand secunda curenta devine egala cu secunda finala, deci exact atata vreme sa alerge, cat a mai ramas din secunda in care s-a dat comanda pentru a lansa scriptul.
In acest moment avem un numar aleatoriu, variabila iNR, egal cu cateva mii sau zeci de mii.
De mentionat ca inainte de While xista un If care rezolva bugul care ar aparea in caz ca secundarul ceasului ar fi "59" in momentul lansarii scriptului. Daca secundarul ar fi "59", secunda finala, variabila iSf, ar fi "60", iar While-ul nu s-ar mai opri, la ceas neexistand niciodata aceasta valoare a secundarului, dupa "59" urmand "00". If-ul verifica daca secunda finala a fost determinata ca fiind "60" si o transforma in "00", deci, logic, urmatoarea.
In acest moment asadar, avem numarul aleatoriu de care duceam noi lipsa in JAWS Scripting, iar cea ce ne-a mai ramas de facut, este de a transforma acest numar intr-unul cu valoarea intre 1 si 6.
Daca stim ca restul impartirii la 6 da un numar intre 0 si 5, nu mai ramane decat sa adaugam apoi la rezultat un 1.
Asadar, restul impartirii lui iNR la 6 plus 1 da un numar intre 1 si 6, valoare atribuita variabilei iAleatoriu.
Inlocuind acel 6 cu x, unde x este un numar natural, vom avea valori random intre 1 si x.
Este mai greu de inteles acest script, dar cine ar urmari toate imprimarile si mai ales pe ultima, dupa putina meditatie la cod, va intelege perfect ceea ce se intampla.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Grifnas
Sergent major
Mesaje: 59
Membru din: 12 Mar 2008, 19:54
Localitate: Nasaud

Mesaj de Grifnas »

Pe baza a ceea ce am inteles din aplicatia practica oferita de Manu, am incercat sa realizez un simulator de Loto 6 din 49...

Ceea ce am reusit se afla mai jos:

Inceput cod
Globals
String sSa,
String sSf,
Int iSa,
Int iSf,
Int iNR,
Int iAleatoriu,
Int iAl1,
Int iAl2,
Int iAl3,
Int iAl4,
Int iAl5,
Int iAl6

Script Loto ()
NumarAleatoriu ()
Let iAl1 = iAleatoriu
SayInteger (iAl1)
Pause ()
NumarAleatoriu ()
If iAleatoriu == iAl1 Then
NumarAleatoriu ()
Else
Let iAl2 = iAleatoriu
SayInteger (iAl2)
EndIf
Pause ()
NumarAleatoriu ()
If iAleatoriu == iAl1 || iAleatoriu == iAl2 Then
NumarAleatoriu ()
Else
Let iAl3 = iAleatoriu
SayInteger (iAl3)
EndIf
Pause ()
NumarAleatoriu ()
If iAleatoriu == iAl1 || iAleatoriu == iAl2 || iAleatoriu == iAl3 Then
NumarAleatoriu ()
Else
Let iAl4 = iAleatoriu
SayInteger (iAl4)
EndIf
Pause ()
NumarAleatoriu ()
If iAleatoriu == iAl1 || iAleatoriu == iAl2 || iAleatoriu == iAl3 || iAleatoriu == iAl4 Then
NumarAleatoriu ()
Else
Let iAl5 = iAleatoriu
SayInteger (iAl5)
EndIf
Pause ()
NumarAleatoriu ()
If iAleatoriu == iAl1 || iAleatoriu == iAl2 || iAleatoriu == iAl3 || iAleatoriu == iAl4 || iAleatoriu == iAl5 Then
NumarAleatoriu ()
Else
Let iAl6 = iAleatoriu
SayInteger (iAl6)
EndIf
EndScript

Int Function NumarAleatoriu ()
Let sSa = SysGetTime ("ss")
Let iSa = StringToInt (sSa)
Let iSf = iSa + 1
Let sSf = IntToString (iSf)
If sSf == "60" Then
Let sSf = "00"
EndIf
Let iNR = 0
While sSa != sSf
Let sSa = SysGetTime ("ss")
Let iNR = iNR + 1
EndWhile
Let iAleatoriu = iNR % 49 + 1
EndFunction
Sfarsit cod
Grigore Frisan
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Excelenta ideea!
Eu cred ca are o mica insuficienta...
Ai prevazut ca daca urmatorul numar extras este egal cu unul din anterioarele sa extraga din nou. Ei bine, daca se nimereste ca din nou sa fie un numar egal cu unul dintre anterioarele?
Sugestia mea e sa inlocuiesti If-ul cu While.
Deci, in loc de expresia tradusa in limbaj uman:
Daca numarul curent este egal cu un numar anterior, atunci
Extrage din nou!
Ar fi buna expresia:
Atata vreme cat numarul curent este egal cu un numar anterior,
Extrage din nou!
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Emanuel.Selaru
Maior
Mesaje: 728
Membru din: 28 Mar 2008, 10:20
Localitate: Buzau

Mesaj de Emanuel.Selaru »

Pentru cei interesati de Skype 4.2, problemele enumerate de mine acum ceva zile, s-au cam rezolvat, odata cu aparitia ultimei versiuni in ziua de ieri, 10 martie, dar si a unor scripturi noi, ce rezolva problema citirii mesajelor instant, singura problema ramanand anuntarea mesajelor clasice, in momentul conectarii/deconectarii unui prieten. Au imbunatatit dinou calitatea sunetului, dar si accesibilitatea in Skype.
Grifnas
Sergent major
Mesaje: 59
Membru din: 12 Mar 2008, 19:54
Localitate: Nasaud

Mesaj de Grifnas »

M-am gandit si eu la asta, dar, din pacate, abia dupa ce ma apucase lenea... totusi, cred ca voi reveni asupra codului...
Multumesc pentru idee!!!
Grigore Frisan
Ciprian Brahas
Caporal
Mesaje: 22
Membru din: 24 Sep 2009, 18:10
Localitate: Roma

Mesaj de Ciprian Brahas »

Am luat si eu inregistrarile cursului de scripting, am ajuns deja la ultima lectie. Am reusit si eu sa fac un cronometru, care numara, prima oara pina la zece, apoi din zece in zece secunde pina la un minut, apoi din minut in minut pina la zece si se poate face sa te anunte cand vrei tu. Tot in acelasi cronometru am inclus si posibilitatea de a fi avertizat cand vrei tu, dar, acolo a intervenit o problema; cand e vorba sa fii avertizat daca ar trebui sa vorbeasca variabila sUrca, nu mai vorbeste, in schimb, functioneaza avertizarea. Ce ar fi de facut? Imi cer scuze daca nu m-am exprimat bine, acesta fiind primul mesaj scris de mine in forum, astept raspuns, Multumesc mult celui care-mi va raspunde, Ciao!
Toate cele bune la toti cititorii si colaboratorii forumului Pontes!
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Ma bucur ca a mai aparut un scripter, se pare ca inregistrarile nu au fost facute fara rost.
Poate pui aici codul dupa ce il cizelezi, atunci ne putem exprima strict pe el.
Daca am inteles bine, cand apesi o tasta se intrerupe anuntarea timpului... Nu stiu ce ar fi de facut in acest sens... Asta e problema JAWS-ului care la apasarea unei taste opreste verbalizarea in curs... dar trebuie sa vedem, in mod normal ar trebui ca SayInteger-ul sa fie reluat.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Ciprian Brahas
Caporal
Mesaje: 22
Membru din: 24 Sep 2009, 18:10
Localitate: Roma

Mesaj de Ciprian Brahas »

Din nou salutari de la mine! Mai jos voi pune textul cu scriptul cu cronometru.
Cum spuneam in primul mesaj cronometru va numara pina la zece, apoi din zece in zece secunde pina la un minut, apoi din minut in minut pina la zece minute, urmand ca fiecare sa-l programeze dupa cum doreste.
Lucrul asta se intampla in cazul cand nu dorim sa fim avertizati la un anumit timp. La acest cronometru am pus si posibilitatea de a fi avertizati la un anumit timp dorit de noi, vom auzi un beep si apoi jaws spunand avvertimento, voi puteti schimba in limba Romana. Aici, in schimb, e o problema, si anume: daca se nimereste momentul de avertizare in acelasi timp cu acela in care ar trebui ca jaws sa ne anunte timpul trecut dupa, dupa programarea mai sus mentionata, va ramane doar acel beep impreuna cu cuvantul avvertimento. E posibil sa se faca ceva? Eu, pentru moment sunt foarte incepator. Vreau sa mentionez ca inainte de a lipi script-ul l-am probat din nou pentru a fi sigur.
Cu alta ocazie, sper curand, sa trimit si scriptul cu aflarea varstei, dar, va spune cu exactitate anii si lunile, pentru zile nu m-am ocupat. Deci eu, acum, nu pot avea 36 de ani. Pentru asta am facut sa-mi spuna, de exemplu pentru mine, "Ciprian are 35 de ani si 6 luni". Prima oara, unde spunea doar anii, imi spunea ca eu am 36 de ani, ceea ce nu e adevarat. Anii si lunile, bine inteles, pentru oricine in parte, eu am dat exemplu pe mine.
Pentru moment, voi lipi doar cronometru si data urmatoare il voi pune si pe acela si sper sa fie cat mai multe. Imi cer scuze daca nu m-am exprimat prea bine. Sper sa va faca placere! Inainte de a lipi cronometrul, eu doresc toate cele bune tuturor colaboratorilor Pontes! Ciao!

Inceput cod
Globals
String sStop,
Int iStop,
String sSegnale,
Int iSegnale,
Int iSalli

Script Cronometro ()
InputBox ("Digita quanto vuoi per il cronometro", "Cronometro", sStop)
InputBox ("Digita quando vuoi essere avvertito! Caso mai, se no, premi anulla!", "Avvertimento", sSegnale)
Let iStop = StringToInt (sStop)
Let iSegnale = StringToInt (sSegnale)
Let iSalli = 0
Delay (25)
SayString ("Start!")
While iSalli < iStop
Delay (10)
Let iSalli = iSalli +1
If iSegnale == 0 then
Let iSegnale = iStop + 1
ElIf iSalli % iSegnale == 0 then
Beep ()
SayString ("Avvertimento!")
ElIf iSalli % 1 == 0 && iSalli < 10 then
SayInteger (iSalli)
ElIf iSalli % 10 == 0 && iSalli < 60 then
SayInteger (iSalli)
ElIf iSalli % 60 == 0 && iSalli < 601 then
SayInteger (iSalli / 60)
SayString ("Minuti.")
EndIf
EndWhile
SayString ("Il cronometro, finito!")
EndScript
Sfarsit cod
Ultima oară modificat 17 Mar 2010, 10:48 de către Ciprian Brahas, modificat 1 dată în total.
Grifnas
Sergent major
Mesaje: 59
Membru din: 12 Mar 2008, 19:54
Localitate: Nasaud

Research it

Mesaj de Grifnas »

Sper ca, desi este vorba de Jaws 11, faptul ca, ceea ce vreau sa va prezint are legatura si cu scripting-ul, nu fac o greseala prea mare inserand acest mesaj in topicul "Aplicatii practice"...

Deci, in Jaws 11, a aparut o unealta noua numita "Research it" cu ajutorul careia pot fi accesate, fara deschiderea unui browser de Internet, o gramada de informatii de pe diferite site-uri, cum ar fi: Wikipedia, Wiktionary etc...

"Research it" poate fi deschis in mai multe moduri dintre care doua sunt urmatoarele:
  • Insert + control + alt + r, combinatie care deschide un "EditBox" in care putem scrie ceea ce cautam;
  • Insert + spatiu, dupa care auzim un "clap", apoi, "R" care va deschide "EditBox"-ul despre care vorbeam;
Pentru ca toate informatiile la care avem acces in modul standard sunt in engleza, am adaptat/modificat putin cateva fisiere care intermediaza relatia Jaws-ului cu Wikipedia si Wiktionary, asa incat site-urile "tinta" sa fie cele scrise in limba romana.

Asadar, cei interesati pot sa descarce arhiva aceasta si sa puna continutul ei in directorul "RuleSets" din "Enu" original, adica cel folosit de catre Jaws pentru toti utilizatorii ["all users"]...

Dupa ce fisierele vor fi la locul lor, deschideti, cu Insert + F2, Jaws manager/Configuration manager/Default.jcf/Research it options unde selectati noile componente: Ro.Wikipedia si Ro.Wiktionary...
O.K. si salvati modificarile facute in "Default.jcf"; dupa asta, in cazul in care veti dori sa cautati informatii in Wikipedia sau Wiktionary [in variantele lor romanesti], Insert + Spatiu, apoi "R" care va afisa "EditBox"-ul, scrieti, spre Exemplu "Spinoza", Enter, selectati, din lista, Ro.Wikipedia, din nou, Enter si se va virtualiza o parte din articolul dedicat lui Baruch Spinoza...

Sa va fie de folos!
Grigore Frisan
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Multumim pentru explicatiile la obiect si pentru fisiere, urmeaza sa mai realizam si pentru alte site-uri, nu doar Wikipedia, iar apoi sa facem un pachet de instalare in acest sens.

Mai mentionez combinatia Insert + Windows + R, aceasta deschizand Research It cu textul importat din sursa setata ca implicita/default, text rezultat pe cautarea cu stringul selectat, fie in Word, fie in Messenger, oriunde.
Pentru a face sursa Wikipedia Ro sa fie default, se merge in Configuration Manager, in Default, la Set Options in Research It. Aici apare un combo cu toate sursele, Amazon, Weather etc, se cauta Ro Wikipedia si la primul tab apare un buton "Set Primary".

Stim ca fisierele JCF, cele care stocheaza setarile JAWS din Configuration manager pot fi personalizate per aplicatie in parte.
Putem seta ca default pentru word Wikipedia Ro, in Yahoo Messenger sa fie Weather etc.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Ciprian Brahas scrie:Cum spuneam in primul mesaj cronometru va numara pina la zece, apoi din zece in zece secunde pina la un minut, apoi din minut in minut pina la zece minute, urmand ca fiecare sa-l programeze dupa cum doreste.
Lucrul asta se intampla in cazul cand nu dorim sa fim avertizati la un anumit timp. La acest cronometru am pus si posibilitatea de a fi avertizati la un anumit timp dorit de noi, vom auzi un beep si apoi jaws spunand avvertimento, voi puteti schimba in limba Romana. Aici, in schimb, e o problema, si anume: daca se nimereste momentul de avertizare in acelasi timp cu acela in care ar trebui ca jaws sa ne anunte timpul trecut dupa, dupa programarea mai sus mentionata, va ramane doar acel beep impreuna cu cuvantul avvertimento. E posibil sa se faca ceva? Eu, pentru moment sunt foarte incepator.
Nu pari sa fi chiar incepator. Cred ca acolo ar trebui un If care sa verifice daca se nimereste acelasi timp pentru cele doua anuntari. Mai asteptam modele de scripturi.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Scrie răspuns