Programmeren in REXX/Een beetje OORexx: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
GuyDC (overleg | bijdragen)
Registry lezen
GuyDC (overleg | bijdragen)
Toevoegen functiepakket
Regel 7:
 
Verdere informatie kan gevonden worden in het boek '''OODialog Reference''' dat als bestand ''oodialog.pdf'' terug te vinden is in map ''c:\Program Files\ooRexx\doc\''.
=Extern functiepakket maken=
Met OORexx is het wel mogelijk een extern functiepakket te maken dat niet minder performant is dan een interne functie. Het grootste voordeel is natuurlijk dat we de functies niet steeds moeten toevoegen in elke programma dat er gebruik wilt van maken.
 
Een functiepakket "MijnRoutines.rex" ziet er dan bijvoorbeeld als volgt uit:
'''::ROUTINE LINKS PUBLIC'''
if arg(3)='' then pad=' '; else pad=arg(3)
return left(arg(1),arg(2),pad)
'''::ROUTINE RECHTS PUBLIC'''
if arg(3)='' then pad=' '; else pad=arg(3)
return right(arg(1),arg(2),arg(3))
Het oproepend programma kan er dan als volgt gebruik van maken:
say links("Tekst",18)
say rechts("Tekst",18,'-')
'''::REQUIRES "D:\RexxProgrammas\MijnRoutines.rex'''
<!---------------------------------------------------------------------->
=Grafische schermpjes=
De nu volgende functies kunnen maken dat het programma geen opdrachtprompt meer nodig heeft. Of beter gezegd, de opdrachtprompt kan geminimaliseerd blijven. Als voor het programma een snelkoppeling wordt gemaakt kan het dus gaan lijken op een klassiek Windows programma. Indien OORexx niet ten volle wordt benut blijven de mogelijkheden echter beperkt zoals we zullen zien.
 
==Functies door OORexx geleverd==
Maak daarom een kopie van de opdrachtprompt. Open de eigenschappen en vul als "doel" voor de snelkoppeling het volgende in:
OORexx levert een aantal extra functies als toevoeging op de standaardfuncties die we in het begin van het boek leerden kennen.
"C:\Program Files\ooRexx\rexx.exe" "D:\RexxProgrammas\MijnProgramma.rex"
Deze functies moeten geactiveerd worden met:
en laat het "uitvoeren" in een geminimaliseerd venster. Op het tabblad "Algemeen" kan je een sprekende titel geven, en in de map "C:\Program Files\OORexx\" kan het icoontje OORexx.ico gekozen worden om niet dat van de opdrachtprompt te blijven behouden.
 
Indien OORexx niet ten volle wordt benut blijven de mogelijkheden echter beperkt zoals we zullen zien.
==Functies van het OODialog pakket==
OORexx levert een aantal extra functies als toevoeging opvoor de standaardfunctiesstandaard functies die we in het begin van het boek leerdenvroeger kennenaanleerden.
Deze functies zitten in OODialog.dll en moeten geactiveerd worden met:
call RxFuncAdd "InstMMFuncs","OODialog","InstMMFuncs"
call "InstMMFuncs"
Dit is de lijst dievan inde ditfuncties functiepakketuit dit zittenpakket:
===InfoMessage===
'''InfoMessage'''(bericht)
Regel 30 ⟶ 50:
'''GetScreenSize'''()
Retourneert een string waarin 4 waarden staan:
#breedte van de dialoog in dialoogeenheden
#hoogte van de dialoog in dialoogeenheden
#breedte van het fysisch scherm in pixels
#hoogte van het fysisch scherm in pixels
Deze waarden kunnen nuttig zijn indien we de breedte van inputvelden willen bepalen zoals we later zullen zien.
===PlaySoundFile===
'''PlaySoundFile'''(wav-bestand[,asynchroon])
Regel 64 ⟶ 83:
call WinTimer "WAIT,timer /* wachten op tijdsignaal... */
stop = WinTimer("STOP",timer) /* vroegtijdig stoppen */
Standaard heeft REXX slechts één chronometer. Hiermee kunnen we meer chronometers starten, en wachten op een tijdssein.
<!--------------------------------------------------------------------------------------->
==Publieke OORexx routines==
De functies die we net zagen bestaan ook als zogenaamde publieke OORexx routines. Om deze functies te kunnen gebruiken moet volgende lijn helemaal achteraan het REXX programma worden toegevoegd om de class-library te benaderen:
::REQUIRES "OODPLAIN.CLS"
U zal merken dat de beschrijving dikwijlsvan de functies niet zelden gelijklopend is aan diegene die we hierboven hebben gezien, doch in sommige gevallen iszal het mogelijk zijn de standaardwaarden of titels van de schermpjes zelf te kiezen, zodat ze niet steeds in het Engels moeten blijven.
Opgepast ook, want sommige parameters moeten nu toch anders geschreven worden geschreven.
 
MaarDaarbovenop zijn er komen nuook nog een reeks anderenieuwe, interessantezeer nuttige functies&nbsp;- (we moeten eigenlijk spreken van methodes). zoudenDit weis moetende lijst van zeggen&nbsp;-publieke bijroutines:
 
Dit is de lijst van publieke routines:
===PLAY - geluid afspelen===
'''Play'''(wav-bestand[,optie])
Regel 193 ⟶ 210:
maand=SingleSelection("Kies je maand","Geboren in",maanden,12,,6)
say "Je bent dus geboren in de maand" maanden[maand]
<!---------------------------------------------------------------------->
=Extern functiepakket maken=
::REQUIRES PAKKET.REX
=Windows register benaderen=
r = .WindowsRegistry~new /* maken van een nieuw registry object */
if r~InitCode \= 0 then exit /* stoppen als mislukt */
&nbsp;
RegistryOk=0 ; RecallOK=0
If r~open(r~Current_User,'Software\MijnSoftware\FileOpen') \=0 then do
RegistryOk=1
qstem. = r~QUERY()
r~LISTVALUES(,lv.)
drop name type
do i=1 to qstem.values
t="name:" lv.i.name "(type="lv.i.type")"
if lv.i.type = "NORMAL" | lv.i.type = "NUMBER" then
t=t "data:" lv.i.data
say t
end
CPath. = r~GetValue(,'CurrentPath')
 
{{50%}}
{{sub}}
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.