PDA

View Full Version : help for tom :)



Lionheart008
04-01-2010, 14:42
hello new year 2010 :)
hello dear thinbasic users and tom ;)

here a little thinbasic example with "eval" module. never used it before, but seem to work. tom asked me last evening about this thing so I am sure it helps for 5 cents ;)


'-------------------------------------------------
'testcode for inputbox with evaluation by franko for tomLebowski
'-------------------------------------------------

Uses "eval", "ui"

DIM Prompt AS STRING VALUE = "Enter Some thing here"
Dim Title As String Value = "InputBox Example"
Dim DefaultText As String Value = "press keyboard keys to change me"
Dim myMsg As String Value = ""
Dim UserExpression As String Value = ""

Eval_SetNumber("6+8*15/4",0)
UserExpression = InputBox$("Enter an expression",, "6+8*15/4") 'not 52,5 ! correct 36 ! :)
MsgBox 0, Eval_Math(UserExpression) '-36

myMsg += UserExpression & $CRLF

MsgBox 0, myMsg


that's what I can do for the moment, I will check another, longer way without "eval" module. nice day, frank lionheart

ErosOlmi
04-01-2010, 15:58
Hi Frank,

I'm sorry but this is not a correct example because Eval_SetNumber is not used in the correct way.
Please read manual (well, maybe I have to improve it): Eval_SetNumber creates a variable in the Eval environment.
So a typical usage could be Eval_SetNumber("MyVariable", 1234)

Check examples in \thinBasic\SampleScripts\Eval\

Here a possible correct example:


Uses "eval"

Dim Prompt As String Value = "Enter Some thing here"
Dim Title As String Value = "InputBox Example"
Dim DefaultText As String Value = "press keyboard keys to change me"
Dim UserExpression As String
Dim Result As Ext

'---Creates an Eval variable to be used in expressions
Eval_SetNumber("MyDivider", 4)

'---Ask for a math expression to be evaluated (here you can use your created variables)
UserExpression = InputBox$("Enter an expression",, "6+8*15/MyDivider")

'---Evaluate the expression
Result = Eval_Math(UserExpression)

'---Show result
MsgBox 0, "Result of " & UserExpression & " is:" & _
$CRLF(2) & Result


Ciao
Eros

Lionheart008
04-01-2010, 18:06
hi eros, that's correct, thanks for explanations. Have checked only short the manual ;)


' Empty GUI script created on 01-04-2010 16:57:31 by (ThinAIR)

Uses "eval","console"

Dim Prompt As String Value = "Enter Some thing here"
Dim Title As String Value = "InputBox Example"
Dim DefaultText As String Value = "press keyboard keys to change me"
Dim UserExpression As String
Dim Result As Ext

'---Creates an Eval variable to be used in expressions
Eval_SetNumber("MySillys", 6)

'---Ask for a math expression to be evaluated (here you can use your created variables)
UserExpression = InputBox$("Enter a new expression!",, "6+8*15-12*8/MySillys") '110 :)

'---Evaluate the expression
Result = Eval_Math(UserExpression)

'---Show result
MsgBox 0, "Result of " & UserExpression & " is:" & _
$CRLF(2) & Result


'-------------- manual help info:
'Eval_SetNumber Define a numeric variable To be used Inside
'Eval Function. If
'variable already exists only its Value will change.
'
'n = Eval_SetNumber(VariableName, VariableValue)
'---------------manual help end :


I have this little but nice behaviour in my mind :)

thanks, frank
@eros
ps: a) it's a secret that this "eval_math" expression is only a simple function or more ?
b) it's possible to create with your re-writing new "thinair" to add a simple similar
InputBox$ command like "Input" syntax for callbacks, functions and these cases?
I don't know if it's possible.

ErosOlmi
04-01-2010, 18:48
a) it's a secret that this "eval_math" expression is only a simple function or more ?

Eval_Math is a function able to solve whatever complex math expression not just simple one. Expressions can have also variables defined.
Eval module is in reality a little BASIC inside thinBasic.
Eval module have a lot of possibilities: you can define variables, you can link Eval variables to thinBasic script variables (but only dynamic strings or EXT numeric variables), you get get or set variables values in/out from Eval module.
If interested, I can create more clever examples other than the one present in thinBasic.



b) it's possible to create with your re-writing new "thinair" to add a simple similar
InputBox$ command like "Input" syntax for callbacks, functions and these cases?
I don't know if it's possible.

Sorry Franck but I do not understand what you mean.
Can you give me more info?

TomLebowski
04-01-2010, 18:59
hi frank, hi eros, many thanks for help. I have looked for a simple Inputbox with math. function, but didn`t know there is an own thinbasic "eval" module :) thank you both! I wanted to start for inputbox$ with function for calculate some values, so you have done in your previous examples.


tom asked me last evening about this thing so I am sure it helps for 5 cents Wink

I will send my idea if I am ready. thought also there were for console own "input" command or something like "?". for gui I should write own function, I see (without using eval module, so I can learn more!).
sorry, have a lot of stress at the moment, my son is ill ;( thank for the tipp and the 5 cents ! best regards, great to get fast reply! tom

ps: thanks for canvas help too! :)

Lionheart008
05-01-2010, 10:31
good morning,

because I find it useful to show how simple input with callback function does work here a little example for calculation of a plane (x,y) for example.

plane calculation:

' Empty GUI script created on 01-05-2010 08:48:42 by franko (ThinAIR)
'---------------------------------------------------------------------
Uses "console", "ui"

%LabelOne = 101
%LabelTwo = 102
%LabelThree = 103
%LabelFour = 104
%textboxy2 = 105
%textboxy1 = 106
%textboxy3 = 107
%ButtonOne = 108

Function TBMAIN () As Long

Local hDlg As Long
Dialog New 0, "PlaneCalculation",-1,-1,320,190,%WS_SYSMENU To hDlg
Control Add Label, hDlg, %LabelOne, _
"calculation of plane for rectangle:", 15, 15, 355, 10
Control Add Label, hDlg, %LabelTwo, "lenght", 15, 50, 50, 10
Control Add Textbox, hDlg, %textboxy1, " ", 75, 45, 80, 13, _
%WS_TABSTOP Or %WS_BORDER Or %ES_NUMBER, %WS_EX_CLIENTEDGE
Control Add Label, hDlg, %LabelThree, "width", 15, 80, 50, 10
Control Add Textbox, hDlg, %textboxy2, " ", 75, 75, 80, 13, _
%WS_TABSTOP Or %WS_BORDER Or %ES_NUMBER, %WS_EX_CLIENTEDGE
Control Add Label, hDlg, %LabelFour, "planeResult", 15, 110, 50, 10
Control Add Textbox, hDlg, %textboxy3, " ", 75, 105, 80, 13, _
%WS_TABSTOP Or %WS_BORDER Or %ES_READONLY, %WS_EX_CLIENTEDGE
Control Add Button, hDlg, %ButtonOne, "Calculation",195,104,105,15
Control Add Button, hDlg, %IDCANCEL, "endClose",195,134,105,15
Dialog Show Modal hDlg, Call DlgProc

End Function

CallBack Function DlgProc()
Local txt As String
Local a, b, c As Long

Select Case CBMSG
Case %WM_COMMAND

Select Case CBCTL
Case %ButtonOne
If CBCTLMSG = %BN_CLICKED Or CBCTLMSG = 1 Then
Control Get Text CBHNDL, %textboxy1 To txt
a = Val(txt)
Control Get Text CBHNDL, %textboxy2 To txt
b=Val(txt)
c = a*b
Control Set Text CBHNDL, %textboxy3, Str$(c)
End If
Function = 1

Case %IDCANCEL
If CBCTLMSG = %BN_CLICKED Or CBCTLMSG = 1 Then
Dialog End CBHNDL
End If
Function = 1
End Select
End Select
End Function


may be it's not 100 per cent perfect (I am not a superb callback profi!), but it works :)

nice day, servus, frank

TomLebowski
05-01-2010, 14:59
:occasion: thanks frank again. exactly that was I am looking for. simple gui with input and callback. I have written some example some years ago with c++, not very difficult. so I see it`s quite easy programming with thinbasic. I like this young and fast programming language! And I see the advantage of modules. as young teacher it takes longer to know all new things around thinbasic language, but then I am running fast and furious for a long time ;)
cheerio, tom