Computer Science Canada

Help me with Font.Draw

Author:  xStil [ Sat Nov 01, 2008 12:53 pm ]
Post subject:  Help me with Font.Draw

A subprogram to get text form the user and then draw it using Font.Draw. All the variables are declared in the full program.
Quote:
process TextWrite
mainfont:=Font.New (MainFont+":"+intstr (sz))
var TEXT :string
TextActive:=true
get TEXT:*
Font.Draw (TEXT,linex,liney,mainfont,cl)
TextActive:=false
end TextWrite

The method used to call this subprogram is:
Quote:
if keys (T) then
delay (50)
fork TextWrite
end if

Again, everything it needs has been declared...
The problem is: I launch it, press 't', type the text, and then press enter...the text is written correctly, but I am forced to press enter a few more times (sometimes one more time, others it could take 10 presses) to get out of the get statement...

If I don't press enter those few more times, and try to close the window with Window.Close (winID), I get an error "Process "TextWrite": I/O attempted on closed stream 2."

Whats wrong in the code???

Author:  xStil [ Sat Nov 01, 2008 1:08 pm ]
Post subject:  RE:Help me with Font.Draw

Embarassed

I figured it out:
The 'TextActive' variable is a variable to allow the whole program to know that TextWrite is functioning, so that most keyboard shortcuts would not be active while I am typing...I added 'and TextActive=false' to the if statement, and now all is well... I guess I forgot to make sure that this if statement knew when to be active and when to be not-active.

I might be able to show the program soon! Very Happy

Author:  Insectoid [ Sat Nov 01, 2008 1:50 pm ]
Post subject:  RE:Help me with Font.Draw

2 questions,

1. Why are you using processes? Procedures are far more reliable.

2. Why are you using delays? They only slow down the program, which is only useful for animations.

Author:  xStil [ Sat Nov 01, 2008 3:49 pm ]
Post subject:  RE:Help me with Font.Draw

1: I feel more comfortable with calling a subprogram with fork, rather than just write down its name, or put it in a 'variable:=function (x,y...)'

But when I have to use procedure/function, then I don't hesitate...

More reliable? Don't procedures and functions allow for 'var parameters'? I heard those were risky to use and can cause complications at the smallest error.

2: I used the delay because, sometimes when I press 't' I hold on for longer and it is written down by the get statement

I got rid of it tho!


: