Tillbaka till Program som finns i Psion 3C

OPL-programmering

Tillbaka till Program som finns i Psion 3C


Ikonen för OPL programmering i Psion 3C

Här följer information om strukturen i vissa delar av OPL programmering. Även om dessa är mycket enkla för en riktig programmerare, kan de ge en kick till dig som ännu inte provat att programmera.

Här är ett exempel på ett av de enklaste program man kan skriva.

	PROC namnet:
	LOCAL namn$(15)
		PRINT "Vad heter du?"
		INPUT namn$
		PRINT "Så du heter",namn$
	GET
	ENDP

Innehållsförteckning för OPL

VARIABLER
VARIABEL TYPER
INMATNING AV TECKEN FRÅN TANGENTBORDET
INPUT
GET$
LOOPAR
DO
WHILE
IF
TEXT OCH GRAFIK
TEXT-stilar
Linje
Grå ram
FRÅN OPL-manualen
Value returned by the RETURN command (using LEFT$)
Procedure returning a value Proc "a" use PRINT proc "b"
Passing back several values by using global variabels


VARIABLER

VARIABELTYPER
LOCAL i%			int% 		heltal%
LOCAL peng&			longint&		heltal störrre_än_32000&
LOCAL kurs			float 		flyt_tal
LOCAL namn$(14)		string$		text-sträng

LOCAL numbers%(4)		string%(4)	heltals-array
LOCAL foo(4)			string(4) 	flyttals-array
LOCAL names$(5,14)		string$(5,14)	textsträng-array
Tillbaka till OPL innehållsförteckningen

INMATNING AV TECKEN FRÅN TANGENTBORDET

INPUT

Väntar på inmatning av tecken som avslutas med Enter.

PRINT "Hej, vad heter du?",
INPUT namn$
GET$

Väntar på första tecken utan Enter.

PROC kchar:
	LOCAL k$(1)
	PRINT "Tryck på önskad tangent:"
	k$=GET$					GET$ ett alternativ till INPUT k$
	PRINT "Du valde",k$
Pause 40
ENDP
Tillbaka till OPL innehållsförteckningen

LOOPAR

DO
PROC try_do:
	LOCAL a%
	a%=10
	DO
		PRINT "A = ";a%
		a%=a%-1
	UNTIL a$=0
	PRINT "Färdigt"
	GET
ENDP
Tillbaka till OPL innehållsförteckningen
WHILE
PROC loop:
	LOCAL i%
	i%=1
	WHILE i%<=2
		GOTO takeone::
	i%=i%+1
	ENDWH	
GET
ENDP
Tillbaka till OPL innehållsförteckningen
IF
PROC om_om:
	LOCAL j%
	initiera::
	IF val$="S" OR val$="s"
		svefim:				hoppa till denna procedur, eller om
		ELSEIF val$="F" OR val$="f"	du valde att trycka på tangenten "F"
			fimsve:			så ska du hoppa till denna procedur
		ELSE
			GOTO initiera::		om felaktigt val gjordes, börja om igen
	ENDIF
ENDP
Tillbaka till OPL innehållsförteckningen

TEXT OCH GRAFIK

TEXT-stilar

Det finns ett antal olika typer av textstilar. Dessa heter 0, 1, 2, och så vidare. Olika typer är:

Ovanstående val finns dessutom för tecken som visas med: Dessutom gäller alla ovanstående val för tecken som visas med kursiv stil.
PROC textstil:
	gSTYLE 1		:rem gSTYLE 1 ger ARIAL, FET
	gAT 0,15		:rem  X, Y-position på skärmen
	gPRINT "1 ARIAL FET"	:rem texten "1 ARIAL FET" visas på skärmen
ENDP
Tillbaka till OPL innehållsförteckningen
Linje

Rita från/till relativ position (gMOVE / gLINEBY) eller ange först absolut position (gAT x,y / gLINETO)

PROC linje:
	gMOVE 	20,40		REM startar linjen på denna relativa plats
	gLINEBY 420,0		REM ritar 420 pixels i X-led, samma nivå i y-led
	GET
ENDP

	PROC linje:
	gAT 	20,40		REM Starta linjen på denna absoluta position.
	gLINETO 440,40		REM Rita till denna absoluta position
	GET
ENDP

PROC drawdot:
	gAT 20,10
	gLINEBY 0,0 		REM ritar en punkt (pixel) på position X=20, Y=10
	GET
ENDP
Tillbaka till OPL innehållsförteckningen
Grå ram

Jag har inte satt mig in i detta tillräckligt.

PROC frames:
	DEFAULTWIN 1
	gGREY 1					aktiverar grå penna
	gAT 0,0					popsition x,y
	gFILL gWIDTH, gHEIGHT, 0		fyll allt med grått
		
	gGREY 0
	gSTYLE 1
	gAT 70,50
	gPRINT "Texten ska komma här"
	gAT 50,80				övre X,Y-värde
	gFILL 300,70,1
	gGREY 1 :gFILL 300,70,1 :gGREY 0 
	gSTYLE 15
	gAT 110,120
	PRINT "Texten ska komma här"
	PAUSE 30
	gGREY 1 :gFILL 300,70,1 :gGREY 0 
	gSTYLE 25
	gAT 110, 120
	gPRINT "Här ere ljust"
	GET
ENDP
Tillbaka till OPL innehållsförteckningen

FRÅN OPL-manualen

Page 33 A value returned by the RETURN command (using LEFT$).
PROC return:
	LOCAL a$(30),b$(2)
	PRINT"Enter reference and name"
	INPUT a$
	b$=ref$:(a$)
	PRINT "Ref is:",b$
	GET
ENDP
PROC ref$:(name$)
	RETURN LEFT$(name$,2)
	REM LEFT$ takes first two letters of name$
ENDP
Page 33 B Procedure returning a value Proc "a" use PRINT proc "b".
PROC Oprocret:
	LOCAL x,r
	PRINT "Ange pris:",
	INPUT x
	PRINT "Ange moms (ex 0.25):",
	INPUT r
	PRINT "Pris, inklusive moms =",tax3:(x,r)
	GET
ENDP
PROC tax3:(p1,p2)
	RETURN p1+p2 %
ENDP
Page 34 Passing back several values by using global variabels.
PROC Oglobal:
	GLOBAL varone, vartwo
	varone=2.5
	vartwo=2
	PRINT varone, vartwo
	op:
	PRINT varone, vartwo
	GET
ENDP
PROC op:
	varone=varone*2
	vartwo=vartwo*4
ENDP
Tillbaka till OPL innehållsförteckningen

Top of page
Psion Program
Shareware
Home