Programare in Jaws Scripting, aplicatii practice

Diverse limbaje, programare, scripting, coduri, unelte specifice etc.
Scrie răspuns
gelu roata
Caporal
Mesaje: 17
Membru din: 20 Ian 2010, 10:06
Localitate: Bucuresti

Mesaj de gelu roata »

manu scrie:In stringul alcatuit din trei parti delimitate de ":" (doua puncte), al doilea segment reprezinta minutele, nu al treilea, astfel trebuie:
Let sMinutes = StringSegment (sFirstSegment, ":", 2)
iar pentru ore trebuie 1 la al treilea parametru:
Let sHours = StringSegment (sFirstSegment, ":", 1)
Cred ca ceva mai lipseste ca spune "Unknown function".
As vrea sa reunesc cele trei scripturi sub o singura functie ca la o combinatie sa spuna cei trei parametri.
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Spune exact cum ar fi util sa fie scriptul... Sa anunte pe rand specificand ore, minute, secunde, miimi?
Il pun eu apoi aranjat si completat sa nu dea gres.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
gelu roata
Caporal
Mesaje: 17
Membru din: 20 Ian 2010, 10:06
Localitate: Bucuresti

Mesaj de gelu roata »

Da, exact, ca la o combinatie de taste sa spuna toti parametrii si, ar mai fi interesant sa poata spune timpul unei portiuni selectate dintr-un fisier.
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Ok, mai jos este tot ce trebuie pentru ca in Sound Forge sa se afle timpul sub orice forma vrei, ma refer la timpul pozitiei curente.
Implicit, la combinatia Insert + Sageata in sus va anunta toti parametri, dar cu o alta combinatie de taste care este setata pentru scritpul AlegeCeSaAnunt () se va putea alege care anume parametru sa fie anuntat.
Asadar, dupa copierea codului de mai jos in fisierul de scripturi pentru Sound Forge, vor trebui setate combinatii de taste pentru cele doua scripturi.

Inceput cod

Include "hjconst.jsh"

Globals
String sLongTime,
Int iMod

Const
sMesaj = "Ce parametrii de timp sa fie anuntati la combinatia de taste folosita?",
sMod = "Toti parametrii|Doar ore|Doar minute|Doar secunde|Doar miimi de secunda"

Function GetSFCurrentPosition ()
SpeechOff ()
If MenusActive () Then
ActivateMenuBar ()
EndIf
PCCursor ()
TypeKey ("Control+G")
Pause ()
Let sLongTime = GetSelectedText ()
Pause ()
TypeKey ("Escape")
SpeechOn ()
EndFunction

Script AlegeCeSaAnunt ()
Let iMod = DlgSelectItemInList (sMod, sMesaj, FALSE)
EndScript

Script SpunePozitieActuala ()
GetSFCurrentPosition ()
If iMod == 0 || iMod == 1 Then
SayString (sLongTime)
ElIf iMod == 2 Then
SayString (StringSegment (StringSegment (sLongTime, ",", 1), ":", 1))
ElIf iMod == 3 Then
SayString (StringSegment (StringSegment (sLongTime, ",", 1), ":", 2))
ElIf iMod == 4 Then
SayString (StringSegment (StringSegment (sLongTime, ",", 1), ":", 3))
ElIf iMod == 5 Then
SayString (StringSegment (sLongTime, ",", 2))
EndIf
EndScript

Sfarsit cod
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 »

Multi impart in Microsoft Word un document mare in cateva mai mici pentru a usura munca apoi, fie ca sunt citite in Quick Office pe telefon, fie ca sunt folosite pentru a fi transpuse in fisiere audio cu Text Aloud-ul.
Am facut un mic script care sa faca munca de rutina in felul urmator:
1. Aflati pe un document, trebuie mai intai de toate sa vedem cate pagini are, mergem cu Control + End si apoi verificam Status Bar cu Insert + Page-Down.
2. Activam apoi scriptul cu combinatia de taste pe care o setam.
In primul rand apare o intrebare de siguranta, daca se cunoaste sau nu numarul de pagini al intregului document; daca nu, se intrerupe executia scriptului.
3. Apare un prim edit unde trebuie scris numarul de pagini al intregului document.
4. Apare un al doilea edit unde se specifica numarul de pagini dorit pentru fiecare document rezultat in urma impartirii.
5. In al treilea si ultimul edit, se cere un nume pe care il va avea fiecare document rezultat in urma impartirii. Inaintea acestui nume, va fi pus automat si numarul de ordine al documentului.
6. Se asteapta pana procesarea este finalizata, in final este anuntat faptul ca Microsoft Word se inchide si documentul original ramane intact.

Documentele sunt gasite dupa caz, fie in My documents, fie in folderul din care a fost deschis documentul mare.

A nu se face nimic in timpul procesarii, practic orice abatere de la mersul firesc al lucrurilor va da peste cap intreaga actiune.
De asemenea, ar fi bine sa fie inchis Messenger-ul.

Pentru a avea acest script valabil pentru Microsoft Word, trebuie urmati pasii:
1. Se deschide fisierul text aflat la link-ul urmator, se selecteaza in intregime cu Control + A si apoi se copiaza in Clipboard cu Control + C.
Scritpul pentru impartirea documentelor in Microsoft Word
2. Dupa ce se deschide programul Microsoft Word, aflat pe fereastra acestuia se apasa Insert + 0 pentru a deschide fisierul de scripturi.
3. Se merge la sfarsitul fisierului cu Control + End si se da eventual un enter pentru a crea un rand liber.
4. Se da paste la textul din clipboard, adica tot codul copiat din documentul de la link-ul aflat la punctul 1.
5. Se merge cu sageata in sus pe unul dintre randurile scriptului copiat, si se da Control + D pentru a aparea un dialog in care se poate seta combinatia de taste cu care in viitor va fi apelat scriptul.
Se da Tab pana la campul Asign To, aici se apasa combinatia dorita, eu am pus Control + Shift + Enter, apoi se mai da un Tab si Enter pe Ok.
6. Se salveaza si recompileaza scripturile cu Control + S, daca nu apare vreo eroare, totul ar trebui sa fie in regula, se poate inchide Script Managerul.

Daca sunt erori... le-om mai corecta, la mine a mers astfel cu JAWS 10 pe Microsoft Office Word 2003. Sper ca si pe 2007 sa fie aceleasi scurtaturi de taste, adica Control + G pentru salt la pagina, Control + N pentru document nou etc.
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 »

manu scrie:Multi impart in Microsoft Word un document mare in cateva mai mici pentru a usura munca apoi, fie ca sunt citite in Quick Office pe telefon, fie ca sunt folosite pentru a fi transpuse in fisiere audio cu Text Aloud-ul.
Am facut un mic script care sa faca munca de rutina in felul urmator:
[...]
Ai facut o treaba foarte utila si, intr-adevar, impartirea documentelor pentru a fi convertite, ulterior, in MP3 dadea multe batai de cap oamenilor...
Multumim!!!
Grigore Frisan
GruiaVelicu
Locotenent - colonel
Mesaje: 1063
Membru din: 15 Mar 2008, 15:50
Localitate: Cluj-Napoca

Mesaj de GruiaVelicu »

intr-adevar eu folosesc foarte mult aceasta operatie a impartitului de documente. am testat scriptul pe office 2007 si ar fi cred eu o mica problema. la salvarea documentului nu apuca sa scrie numele. Pentru unu scrie dupa aia ori scrie partial ori deloc. cred ca ar trebui sa i se dea un timp mai mare pentru salvare. in rest functioneaza bine.
Gruia
gelu roata
Caporal
Mesaje: 17
Membru din: 20 Ian 2010, 10:06
Localitate: Bucuresti

Mesaj de gelu roata »

La mine, testat, merge fara erori.
Multumim de idee.
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

gruiavelicu scrie:am testat scriptul pe office 2007 si ar fi cred eu o mica problema. la salvarea documentului nu apuca sa scrie numele. pentru unu scrie dupa aia ori scrie partial ori deloc. cred ca ar trebui sa i se dea un timp mai mare pentru salvare. in rest functioneaza bine.
Ciudat, practic acolo este si un Pause si un Delay de o Secunda.
Numarul de ordine apare? sau nici acela uneori.
Daca apare tot timpul numarul de ordine, atunci am mai creat separat compunerea numelui fisierului.
Problema cu incapacitatea de salvare o mai am si eu pe calculatorul meu la Quick Reading on Mobile, unde daca e titlul mai lung... sunt momente cand in Heading-ul de nivel 1 nu apuca sa il scrie pe tot.
Solutia mai este si scrierea unui nume scurt, e suficient si primele trei litere din autor, oricum nu conteaza apoi.
Asadar, ar trebui incercat inca o data, am actualizat putin modul de compunere al numelui fisierului si am marit niste Delay-uri de la o secunda la o secunda si jumatate.
Deci trebuie mers la inceputul scriptului deja existent, ultimul din fisierul pentru Word, se da Control + Shift + End pentru a selecta totul si se da Delete, apoi se pune scritpul nou, combinatia de taste ne mai fiind necesar sa fie setata.
Scritpul pentru impartirea documentelor in Microsoft Word
Ultima oară modificat 25 Ian 2010, 16:34 de către Manu, modificat 1 dată în total.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
GruiaVelicu
Locotenent - colonel
Mesaje: 1063
Membru din: 15 Mar 2008, 15:50
Localitate: Cluj-Napoca

Mesaj de GruiaVelicu »

intr-adevar, dupa ce s-a pus o intirziere mai mare la salvarea documentelor, scriptul merge perfect si in office 2007
Gruia
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Da, in cele din urma, problema era ca intre apasarea combinatiei Control + S si aparitia casetei de dialog Save As era nevoie de un timp cat de cat, Microsoft Office 2007 se misca mai greu, mai ales daca nu e un calculator foarte performant, cu DDR2 si din astea.
Am pus in cele din urma un Delay de 3 secunde intre actiuni ca sa fie sigur. Pana la urma, documentul poate fi lasat in pace, intr-un final se termina el... Dureaza in jur de 30 secunde per document mic, deci, o carte de 200 de pagini impartita in documente de cate 10 pagini ar lua cam 10 minute la procesare.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
GruiaVelicu
Locotenent - colonel
Mesaje: 1063
Membru din: 15 Mar 2008, 15:50
Localitate: Cluj-Napoca

Mesaj de GruiaVelicu »

numai bine poti bea o cafeluta sau trage o tigara. sau si una si alta
Gruia
Mira
Sublocotenent
Mesaje: 257
Membru din: 30 Ian 2007, 18:02
Localitate: Cluj-Napoca

Mesaj de Mira »

Fac si eu cursul in paralel, sunt putin in urma. Am ajuns la cursul 4 si pun aici tema, sper ca am reusit sa o fac destul de bine. Este tema cu calcularea pretului cu tot cu TVA, dupa ce este introdus in euro fara TVA. Daca nu e prea bine, astept corectari. :)

Globals
String sNumeProdus,
String sVPE,
Int iVPE,
Int iVPL,
String sVPT,
Int iVpt,
String sVE,
Int iVe,
int iTVA,
String sEnunt

Script ValoareEuro ()
InputBox ("Ce Valoare are un euro", "Euro azi", sVE)
EndScript

Script SpuneValoareEuro ()
SayString (sVe)
EndScript

Script CalculValoareProdus ()
InputBox ("Introduceti Numele Produsului","Produs", sNumeProdus)
Pause ()
InputBox ("Introduceti pretul produsului in euro", "Pret", sVPE)
Let iVE = StringToInt (sVE)
Let iVPE = stringToInt (sVPE)
Let iVPL = iVE * iVPE
Let iTVA = iVPL * 19 / 100
Let iVPT = iVPL + iTVA
Let sVPT = IntToString (iVPT)
Let sEnunt = sNumeProdus + " valoreaza " + sVPT + " lei cu tot cu TVA"
SayString (sEnunt)
TypeString (sEnunt)
EndScript
Mira
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

E bine. Eventual ar fi fost putin mai bine daca se punea convertirea stringului cu valoarea euro imediat dupa InputBox-ul aferent, in primul script. Din moment ce ar fi convertirea imediat dupa introducerea valorii, variabila iVE ramane buna in viitor, nu se schimba decat atunci cand se actioneaza primul script pentru a introduce "Euro azi" diferit.
Oricum, bravo!

Orice cod e binevenit aici pentru discutie.

Daca cineva are o propunere clara, cum a fost cea cu impartirea documentelor in Word, poate scrie aici si cand gasesc momentul potrivit, incerc sa rezolv sau rezolvam impreuna cu totii.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
GruiaVelicu
Locotenent - colonel
Mesaje: 1063
Membru din: 15 Mar 2008, 15:50
Localitate: Cluj-Napoca

Mesaj de GruiaVelicu »

ar fi bine sa incerce sa rezolve si cei pasionati nu doar manu. asa s-ar si utiliza cunostiintele obtinute
Gruia
Scrie răspuns