getText() and setText() program not working
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)
|
Not Categorized, Please Help
|
|