1. MS QuickQ(j/k) a quick question

I'm developing a program called PikX that's sorta like my camera.ex and
Ralf's txtshow.ex combined. Here's the syntax:

ex PikX s/l filename

s is for saving pictures, and l is for loading them. Just one problem. It
doesn't know you supplied a valid action. Here's the code:
PikX.ex:
include wildcard.e
include get.e
include graphics.e
include user.e
include image.e
object cl,fname,action,vc
sequence pic
integer fn
cl=command_line()
if length(cl)<4 then
puts(1,"\nUsage: ")
puts(1,"\nPikX s/l filename")
abort(0)
end if
action=cl[3]
fname=cl[4]
vc=video_config()
action=upper(action)
if atom(action)='S' then
pic=save_text_image({1,1},{vc[3],vc[4]})
puts(1,"\nOpening "&fname&"...")
fn=open(trim(fname),"w")
if fn=-1 then
puts(1,"\nThere was an error opening "&fname)
puts(1,"\nWhat might have occured is an access denied error")
abort(1)
end if
print(fn,pic)
close(fn)
abort(0)
elsif atom(action)='L' then
puts(1,"Attempting to read from "&fname&"...")
fn=open(fname,"r")
if fn=-1 then
puts(1,"\nThere was an error loading "&fname)
puts(1,"\nWhat might have occured is a file not found")
puts(1,"\nPlease check your typing and try again")
abort(2)
end if
pic=get(fn)
if pic=-1 then
if pic=GET_EOF then
puts(1,"Reached the end of "&fname&" too soon.")
abort(3)
elsif pic=GET_FAIL then
puts(1,fname&" does not contain a valid image.")
abort(4)
end if
end if
close(fn)
clear_screen()
display_text_image({1,1},pic[2])
if wait_key() then
end if
abort(0)
end if
puts(1,"\n"&action&": This is not a supported action")

Could y'all tell me what's wrong with it?
-------------------------------------
When it comes to programming languages, Euphoria is a cut above -
matt1278 at juno.com and matt1421 at juno.com(and soon to be
irisnmatt at prodigy.net. Then again, maybe not) Euphoria programmer

new topic     » topic index » view message » categorize

2. Re: MS QuickQ(j/k) a quick question

> if atom(action)=3D'S' then
I think you misunderstand the use of atom(). atom() gives you a boolean
telling you whether something is an atom. There is no need for type casting
in Euphoria. You should change this to:
        if compare(action,"S") =3D 0 then
you could also use:
        if action[1] =3D 'S' then
I recommend using the first one since it doesn't matter what action is.

Jeffrey Fielding
JJProg at cyberbury.net

new topic     » goto parent     » topic index » view message » categorize

3. Re: MS QuickQ(j/k) a quick question

Matt Z Nunyabidness wrote:
>I'm developing a program called PikX. Just one problem.
>It doesn't know you supplied a valid action.
change your code to read:
<snip>
action=cl[3]
fname=cl[4]
--let's say byebye before we do anything else
if not atom(action) then
        puts(1,"\n"&action&": This is not a supported action")
        abort(numberofyourchoosing)
end if
--let's not do any of this until we know action is valid
vc=video_config()
action=upper(action)
if    action='S' then
        --save file stuff snipped
elsif action='L' then
        --load file stuff snipped
end if
--end of program

okay, now to say why yours didn't work.

your lines:
   if atom(action)='L' then
   elsif atom(action)='S' then
are the culprits.
atom() returns a true or false (1 or 0) if the
  target is/isnt an atom.

so what did your lines do?
   if atom(action)='L' then

becomes
   if (true/false)='L' then

now the (true/false) would evaluate to true if you
entered "ex pikX l smily.bmp" as the command line
and it would evaluate to false if you entered
"ex pikX load smily.bmp" as the command line.

looking at this closer:


first case:"ex pikX l smily.bmp"
   if atom(action)='L' then
        --action is an atom,namely 'L', therefore
        --atom(action) is true (1) and we get:
   if 1 = 'L' then
        --as the next test
of course the expression 1 = 'L' is FALSE,
so the if-then is NOT executed.

second case:"ex pikX load smily.bmp"
   if atom(action)='L' then
        --action is NOT an atom,namely "LOAD", therefore
        --atom(action) is false (0) and we get:
   if 0 = 'L' then
and of course the expression 0 = 'L' is ALSO FALSE
so the if-then cannot be executed again.

did this explanation help or hurt? ;)

also, matt, _please_ indent a bit... it *really* helps...
*alot*
use whatever indention style you like, even single
character indenting, as long as blocks line up.
you'll help us and perhaps even yourself...

hope this helps--Hawke'

new topic     » goto parent     » topic index » view message » categorize

4. Re: MS QuickQ(j/k) a quick question

k hawke. cyaz!

-------------------------------------
When it comes to programming languages, Euphoria is a cut above -
matt1278 at juno.com and matt1421 at juno.com(and soon to be
irisnmatt at prodigy.net. Then again, maybe not) Euphoria programmer

_____________________________________________________________________
You don't need to buy Internet access to use free Internet e-mail.
Get completely free e-mail from Juno at http://www.juno.com
Or call Juno at (800) 654-JUNO [654-5866]

new topic     » goto parent     » topic index » view message » categorize

5. Re: MS QuickQ(j/k) a quick question

u gave me an idea. the bmp thing, so i added a bitmap action.

-------------------------------------
When it comes to programming languages, Euphoria is a cut above -
matt1278 at juno.com and matt1421 at juno.com(and soon to be
irisnmatt at prodigy.net. Then again, maybe not) Euphoria programmer

_____________________________________________________________________
You don't need to buy Internet access to use free Internet e-mail.
Get completely free e-mail from Juno at http://www.juno.com
Or call Juno at (800) 654-JUNO [654-5866]

new topic     » goto parent     » topic index » view message » categorize

6. Re: MS QuickQ(j/k) a quick question

Error handling is for Beta-testers.

snortboy

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu