getText() and setText() program not working

new topic     » topic index » view thread      » older message » newer message

I am new to Euphoria Programming, I have the following program which works
only half way but does not perform other functions, particularly the
calculate routine has failed to work, and I am frustrated.

The program is well commented on the non-working parts. The program calls
up a file called PROFILE.WIN - this a text file with a single sequence
which is 8 long eg. {5,6,9,11,23,34,45,560} - You may simply copy this and
paste in a note and save it as PROFILE.WIN

Run the program to see how it works, your help is appreciated!

--Profiler.exw -- by Arthur B. Mashiatshidi
--Program to calculate Payout Profile
--uses numbers taken from Profile.win file
--Together with input numbers found in "ExDv1"...
--Should be simple multiplication, ------------- but doesn't work!

include win32lib.ew
without warning
--with trace
--trace(1)


-- These constant are holders for both static and dynmic information

constant
  ProfWin = create(Window,
      "  Payoff Profile Calculator ", 0, 150, 100, 650, 510,
0),
      --main titles
  PrLHd0  = create(CText, "P R I Z E     D I V I S I O N S",
      ProfWin, 10, 5, 580, 30, 0),
  PrHdg1  = create(RText, " Division",
      ProfWin, 5, 45, 95, 30, 0),
  PrHdg2  = create(RText, " Tickets Matching ",
      ProfWin, 100, 45, 280, 30, 0),
  PrHdg3  = create(RText, " Ticket Value ",
      ProfWin, 390, 45, 100, 30, 0),
  PrHdg4  = create(RText, " Div R 0.00",
      ProfWin, 510, 45, 100, 30, 0),

  --Division heading
titles
  HdDv1  = create(RText, "Div. 1 :", ProfWin, 10,  85, 80, 30, 0),
  HdDv2  = create(RText, "Div. 2 :", ProfWin, 10, 120, 80, 30, 0),
  HdDv3  = create(RText, "Div. 3 :", ProfWin, 10, 155, 80, 30, 0),
  HdDv4  = create(RText, "Div. 4 :", ProfWin, 10, 190, 80, 30, 0),
  HdDv5  = create(RText, "Div. 5 :", ProfWin, 10, 225, 80, 30, 0),
  HdDv6  = create(RText, "Div. 6 :", ProfWin, 10, 260, 80, 30, 0),
  HdDv7  = create(RText, "Div. 7 :", ProfWin, 10, 295, 80, 30, 0),

 --Numbers of Tickets Matched in each category
  TxDv1  = create(RText, " ", ProfWin, 100,  85, 280, 30, 0),
  TxDv2  = create(RText, " ", ProfWin, 100, 120, 280, 30, 0),
  TxDv3  = create(RText, " ", ProfWin, 100, 155, 280, 30, 0),
  TxDv4  = create(RText, " ", ProfWin, 100, 190, 280, 30, 0),
  TxDv5  = create(RText, " ", ProfWin, 100, 225, 280, 30, 0),
  TxDv6  = create(RText, " ", ProfWin, 100, 260, 280, 30, 0),
  TxDv7  = create(RText, " ", ProfWin, 100, 295, 280, 30, 0),

 -- Actual Payout per ticket ... input these numbers
  ExDv1  = create(EditText, " ", ProfWin, 400,  85, 100, 30, 0),
  ExDv2  = create(EditText, " ", ProfWin, 400, 120, 100, 30, 0),
  ExDv3  = create(EditText, " ", ProfWin, 400, 155, 100, 30, 0),
  ExDv4  = create(EditText, " ", ProfWin, 400, 190, 100, 30, 0),
  ExDv5  = create(EditText, " ", ProfWin, 400, 225, 100, 30, 0),
  ExDv6  = create(EditText, " ", ProfWin, 400, 260, 100, 30, 0),
  ExDv7  = create(EditText, " ", ProfWin, 400, 295, 100, 30, 0),


 -- Calculated Payout per Category
  AxDv1  = create(RText, " ", ProfWin, 520,  85, 100, 30, 0),
  AxDv2  = create(RText, " ", ProfWin, 520, 120, 100, 30, 0),
  AxDv3  = create(RText, " ", ProfWin, 520, 155, 100, 30, 0),
  AxDv4  = create(RText, " ", ProfWin, 520, 190, 100, 30, 0),
  AxDv5  = create(RText, " ", ProfWin, 520, 225, 100, 30, 0),
  AxDv6  = create(RText, " ", ProfWin, 520, 260, 100, 30, 0),
  AxDv7  = create(RText, " ", ProfWin, 520, 295, 100, 30, 0),
  TtlAx  = create(RText, " ", ProfWin, 400, 330, 100, 30, 0),


  -- show number of bets as well
  Nxbets = create(RText, " ",                ProfWin,   50, 340, 250, 30,
0),
  betVTx = create(RText, "Bet Amount: ",     ProfWin,   50, 380, 210, 30,
0), -- not yet implemented
  betVal = create(LText, " ",                ProfWin,   400, 410, 100, 30,
0), -- but harmless
  TtlxD  = create(RText, "Gross :",          ProfWin,   400, 410, 100, 30,
0),  -- and this one

  -- some buttons to control the window
  btnClr     = create(PushButton, "Clear", ProfWin,      210, 410, 100, 30,
0),
  btnCalc    = create(PushButton, "Calculate", ProfWin,  320, 410, 120, 30,
0),
  btnClose   = create(PushButton, "Close", ProfWin,      450, 410, 80, 30,
0),

  -- basic menu to exit gracefully
  MenuFile   = create(Menu, "&File", ProfWin, 0, 0, 0, 0, 0),
  MenuExit   = create(MenuItem, "E&xit", MenuFile, 0, 0, 0, 0, 0)


-- set the background color and do font stuff
     setWindowBackColor( ProfWin, getSysColor(COLOR_APPWORKSPACE))
     setFont(HdDv1,"Arial",10,1)
     setFont(HdDv2,"Arial",10,1)
     setFont(HdDv3,"Arial",10,1)
     setFont(HdDv4,"Arial",10,1)
     setFont(HdDv5,"Arial",10,1)
     setFont(HdDv6,"Arial",10,1)
     setFont(HdDv7,"Arial",10,1)

     setFont(TxDv1,"Arial",10,0)
     setFont(TxDv2,"Arial",10,0)
     setFont(TxDv3,"Arial",10,0)
     setFont(TxDv4,"Arial",10,0)
     setFont(TxDv5,"Arial",10,0)
     setFont(TxDv6,"Arial",10,0)
     setFont(TxDv7,"Arial",10,0)

     setFont(AxDv1,"Arial",10,0)
     setFont(AxDv2,"Arial",10,0)
     setFont(AxDv3,"Arial",10,0)
     setFont(AxDv4,"Arial",10,0)
     setFont(AxDv5,"Arial",10,0)
     setFont(AxDv6,"Arial",10,0)
     setFont(AxDv7,"Arial",10,0)

     setFont(PrLHd0,"Arial",14,1)
     setFont(PrHdg1,"Arial",10,1)
     setFont(PrHdg2,"Arial",10,1)
     setFont(PrHdg3,"Arial",10,1)
     setFont(PrHdg4,"Arial",10,1)

     setFont(Nxbets,"Arial",10,1)
     setFont(TtlxD,"Arial",10,1)
     setFont(TtlAx,"Arial",10,1)
     setFont(betVTx,"Arial",10,1)
     setFont(betVal,"Arial",10,1)

--some global variables
sequence  axm1,  axm2,  axm3, axm4,
   axm5,  axm6,  axm7,     -- temporary number holders to enable
packaging and data conversions

   VxDv1, VxDv2, VxDv3, VxDv4, --holding the calculated numbers
   VxDv5, VxDv6, VxDv7,

   txm1,  txm2,  txm3, txm4,
   txm5,  txm6,  txm7,     -- number of matches in each category
   txm, -- match numbers

   sTxDv1, sTxDv2, sTxDv3, sTxDv4, --holding the combination of text
and numbers
   sTxDv5, sTxDv6, sTxDv7, stbx,
   Txbets,

   entry, allentries, holder

integer result, junk, numbets

function CollectData()
--Some how this is not working, I am trying to get the data from the
EditText boxes
-- I have tried | entry1 = getText(ExDv1) .... entry7 = getText(ExDv7) -
the same results

      entry = getText(ExDv1) & "," & getText(ExDv2) & "," & getText(ExDv3)
      entry=entry & "," & getText(ExDv4) & "," & getText(ExDv5) & ","
      entry=entry & getText(ExDv6) & "," & getText(ExDv7) & ","

      if (length(entry)=7) then
     junk = message_box("Type pay values in the boxes! \n" &
     "All boxes must have a value or zero",
     "Empty entries no allowed!", MB_TASKMODAL + MB_ICONWARNING)
      setFocus(ExDv1)
     end if

 --(next line is this allowed, storing the data in a sequence ... is
entry a sequence accessible in that manner?
 -- if possible, then maybe I should be returning entries without re
packaging it?
 -- in previous attempts where I have used entry1...entry7 it was
easy to make these members of a sequence but
 -- still it did not work

      allentries = {entry[1],entry[2],entry[3],entry[4],entry[5],entry
[6],entry[7]}

  return allentries

end function


procedure clear_all()

    setText(ExDv1,{})  setText(ExDv2,{})
    setText(ExDv3,{})  setText(ExDv4,{})
    setText(ExDv5,{})  setText(ExDv6,{})
    setText(ExDv7,{})
end procedure

procedure on_btnClear()
    clear_all()
    setFocus(ExDv1)
end procedure

procedure on_btnCalculate()
    --what to do when calculating
    holder = CollectData()

    axm1  = sprintf("%4.2d", holder[1]) --convert numbers to decimal
    axm2  = sprintf("%4.2d", holder[2])  --otherwise won't recognise
    axm3  = sprintf("%4.2d", holder[3])
    axm4  = sprintf("%4.2d", holder[4])
    axm5  = sprintf("%4.2d", holder[5])
    axm6  = sprintf("%4.2d", holder[6])
    axm7  = sprintf("%4.2d", holder[7])

    VxDv1  = txm1 * axm1  -- the second column of multiplicands is carried
over from the calculations
    VxDv2  = txm2 * axm2  -- carried out in the procedure "procedure
onLoad_ProfWin()" below
    VxDv3  = txm3 * axm3  -- and they work pretty well in that procedure
with no hassles
    VxDv4  = txm4 * axm4
    VxDv5  = txm5 * axm5
    VxDv6  = txm6 * axm6
    VxDv7  = txm7 * axm7

-- Punch the numbers into their boxes

    setText( AxDv1, VxDv1 )  -- put numbers into the static holders
declared at the benning of the program
    setText( AxDv2, VxDv2 )  -- seems to be working when observed from
a "traced" run
    setText( AxDv3, VxDv3 )
    setText( AxDv4, VxDv4 )
    setText( AxDv5, VxDv5 )
    setText( AxDv6, VxDv6 )
    setText( AxDv7, VxDv7 )

    setFocus(btnClose)
end procedure

procedure onMenu_Exit()
    closeWindow(ProfWin)
end procedure

procedure onbtn_Close()
    closeWindow(ProfWin)
end procedure

procedure onLoad_ProfWin() -- this one works well
    --what to do when window is opened
    --Load files and get required numbers and display them
atom handle  -- file with matches

    -- lets open file with win sequence
    handle = open("Payoff.win", "r")

    if handle != -1 then
 txm = get(handle) --read first, only line
 close(handle)
    end if

    txm1  = sprintf("%4d", txm[2][1]) --same above
    txm2  = sprintf("%4d", txm[2][2])
    txm3  = sprintf("%4d", txm[2][3])
    txm4  = sprintf("%4d", txm[2][4])
    txm5  = sprintf("%4d", txm[2][5])
    txm6  = sprintf("%4d", txm[2][6])
    txm7  = sprintf("%4d", txm[2][7])
    stbx  = sprintf("%4d", txm[2][8])

    sTxDv1  = "Six Numbers :            " & "  " & txm1
    sTxDv2  = "Five Numbers and Bonus:  " & "  " & txm2
    sTxDv3  = "Five Numbers :           " & "  " & txm3
    sTxDv4  = "Four Numbers and Bonus:  " & "  " & txm4
    sTxDv5  = "Four Numbers :           " & "  " & txm5
    sTxDv6  = "Three Numbers and Bonus: " & "  " & txm6
    sTxDv7  = "Three Numbers :          " & "  " & txm7

    Txbets = "Total numbers of bets were: " & "  " & stbx

    setText( TxDv1, sTxDv1 )
    setText( TxDv2, sTxDv2 )
    setText( TxDv3, sTxDv3 )
    setText( TxDv4, sTxDv4 )
    setText( TxDv5, sTxDv5 )
    setText( TxDv6, sTxDv6 )
    setText( TxDv7, sTxDv7 )
    setText(Nxbets, Txbets)

end procedure

onOpen[ProfWin] = routine_id("onLoad_ProfWin")
onClick[MenuExit] = routine_id("onMenu_Exit")
onClick[btnClr] = routine_id("on_btnClear")
onClick[btnCalc] = routine_id("on_btnCalculate")
onClick[btnClose] = routine_id("onMenu_Exit")

WinMain(ProfWin,Normal)

new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu