# How to do math via Variable/ functions?

## Recommended Posts

in relation to my topic here: http://www.autoitscript.com/forum/index.php?showtopic=105226&st=0&gopid=744357&#entry744357

but now im having problems calling formula (\$var1 - \$var2) / 10 where as Var1 would be for inputbox1 Var2 would be inputbox2 and calculate then show that value in which it equals to within a inputbox3

how would you set it as a variable so it can be called through a function?

keeps saying Warning: \$Var1: possibly used before declaration

##### Share on other sites

in relation to my topic here: http://www.autoitscript.com/forum/index.php?showtopic=105226&st=0&gopid=744357&#entry744357

but now im having problems calling formula (\$var1 - \$var2) / 10 where as Var1 would be for inputbox1 Var2 would be inputbox2 and calculate then show that value in which it equals to within a inputbox3

how would you set it as a variable so it can be called through a function?

Say what?

keeps saying Warning: \$Var1: possibly used before declaration

That means exactly what is says, \$Var1 is possibly used before declaration.

We can't really help you any better unless you tell us what the problem is, and maybe post a reproducer (short but runnable).

##### Share on other sites

Say what?

That means exactly what is says, \$Var1 is possibly used before declaration.

We can't really help you any better unless you tell us what the problem is, and maybe post a reproducer (short but runnable).

Ok, so I made a GUI and what I'm trying to make it do is calculate numbers in only these two forms:

so its like (1400 - 1000) / 10 = 40

Answer is to be converted down into a percentage form. thats why the above formula is being used in that manner...

so if I put 1400 in one inputbox

and 1000 in another input box, when I click the button" Calculate" it should output the answer into the input box designated for holding/showing the answer.

Since there are three different input boxes each one containing a different variable and always the same secondary variable with same formula as above being used calculating into a different percentage... and outputting it seperately to a different input box designated for holding/showing each of their answers....

take the numbers to the answer input boxes and add them all together, showing them within the total of all numbers input box...

so its like

(1400 - 1000) / 10 = 40

(1200 - 1000) / 10 = 20

(1800 - 1000) / 10 = 80

40 + 20 + 80 = 140

so the 140 would show 140 in the "total of all numbers input box"

so it could mean something like... 140% chance to do a critical hit etc.. depending on how I'm using the formula.

or if the cap for a critical hit would be 200%, it would then be 60% from critical hit cap

Edited by Agent

##### Share on other sites

Ok, so I think I'm missing something as now no errors but the button isnt inserting the numbers into the fields...

##### Share on other sites

Can you provide working example code of what you are trying to accomplish?

##### Share on other sites

cody can I send it to you in a pm?

##### Share on other sites

Study this example, who knows, this might help:

```#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
GUICreate("Form1", 221, 122, 221, 149)
\$Input1 = GUICtrlCreateInput("", 8, 16, 41, 21)
\$Input2 = GUICtrlCreateInput("", 72, 16, 41, 21)
\$Input3 = GUICtrlCreateInput("", 144, 16, 49, 21)
GUICtrlCreateLabel("+", 56, 16, 10, 17)
GUICtrlCreateLabel("=", 120, 16, 10, 17)
\$Button1 = GUICtrlCreateButton("Calculate", 64, 64, 75, 25, \$WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
\$nMsg = GUIGetMsg()
Switch \$nMsg
Case \$GUI_EVENT_CLOSE
Exit
Case \$Button1
EndSwitch
WEnd```

Hi ;)

##### Share on other sites

ah ok so I revamped the code i was using and made it a little more cleaner...

Anything used in relation to create the same type of application as I, please give me credit in terms of "giving you inspiration to create"

```#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Math.au3>
;^^^^^^^^^^^^^^^^^^^Control Libraries to Include so it can fully read everything as intended^^^^^^^^^^^^^^^^^^^
;==============================================================================================================
;==============================================================================================================
;===============This Program is not to be used in any other way except for its intended purpose================
;==================================Created on the year 2009====================================================
;========================By, Ambisagrus/Alabaster of Elyos Siel server on NA Aion Online v1.0.1================
;==============================================================================================================
;==============================================================================================================
;###################################GUI Creation#####################################
;==================================Title of Program==================================
\$ACMForm = GUICreate("% Calculator by www.theuber.org", 412, 227, 368, 243)
\$Group1 = GUICtrlCreateGroup("", 8, 72, 393, 145)
\$Eacc = GUICtrlCreateInput("Enemy Accuracy goes here", 96, 88, 161, 21)
\$Cevacha = GUICtrlCreateInput("Evade %", 272, 112, 113, 21)
\$Cparcha = GUICtrlCreateInput("Parry %", 272, 136, 113, 21)
\$Cblocha = GUICtrlCreateInput("Block %", 272, 160, 113, 21)
\$Yblo = GUICtrlCreateInput("Your Block value", 96, 160, 161, 21)
\$Ypar = GUICtrlCreateInput("Your Parry value", 96, 136, 161, 21)
\$Sall = GUICtrlCreateInput("Total outcome of all the % are calculated and shown here", 96, 184, 289, 21)
\$Parry = GUICtrlCreateButton("Parry", 16, 136, 73, 17, \$WS_GROUP)
\$Block = GUICtrlCreateButton("Block", 16, 160, 73, 17, \$WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
\$Header = GUICtrlCreatePic("", 16, 8, 377, 57, BitOR(\$SS_NOTIFY, \$WS_GROUP, \$WS_CLIPSIBLINGS))
GUISetState(@SW_SHOW)
While 1
\$nMsg = GUIGetMsg()
Switch \$nMsg
Case \$GUI_EVENT_CLOSE
Exit

Case \$Parry
CalculateParry()

Case \$Block
CalculateBlock()

EndSwitch
WEnd

Func CalculateParry()
\$parrymath     = Number((\$parryvalue - \$enemyaccuracy) / 10)
\$parrypercent  = GUICtrlSetData(\$Cparcha, \$parrymath)
EndFunc   ;==>CalculateParry

Func CalculateBlock()
\$blockmath     = Number((\$blockvalue - \$enemyaccuracy) / 10)
\$blockpercent  = GUICtrlSetData(\$Cblocha, \$blockmath)
EndFunc   ;==>CalculateBlock

\$var2 = number(0.70 * \$totalparrypercent)
\$var3 = number(0.70 * \$totalblockpercent)
\$addedall = number(\$var1 + \$var2 + \$var3)
EndFunc   ;==>Calculate```

##### Share on other sites

Do you have a problem with the code you posted?

Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.

##### Share on other sites

Do you have a problem with the code you posted?

Yes, it keeps outputting numbers in decimal form and I'm wanting it as whole numbers from 1-100 and to be shown as percentages as a whole number...

Also on top of that its giving me negatives, though answer is correct, its in negative form.. o.o anyway to block negative numbers unless given numbers on input box is typed as a negative?

Below is new code..

```#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Math.au3>
;^^^^^^^^^^^^^^^^^^^Control Libraries to Include so it can fully read everything as intended^^^^^^^^^^^^^^^^^^^
;==============================================================================================================
;==============================================================================================================
;===============This Program is not to be used in any other way except for its intended purpose================
;==================================Created on the year 2009====================================================
;========================By, Ambisagrus/Alabaster of Elyos Siel server on NA Aion Online v1.0.1================
;==============================================================================================================
;==============================================================================================================
;###################################GUI Creation#####################################
;==================================Title of Program==================================
\$ACMForm = GUICreate("% Calculator by www.theuber.org", 412, 227, 368, 243)
\$Group1 = GUICtrlCreateGroup("", 8, 72, 393, 145)
\$Eacc = GUICtrlCreateInput("Enemy Accuracy goes here", 96, 88, 161, 21)
\$Cevacha = GUICtrlCreateInput("Evade %", 272, 112, 113, 21)
\$Cparcha = GUICtrlCreateInput("Parry %", 272, 136, 113, 21)
\$Cblocha = GUICtrlCreateInput("Block %", 272, 160, 113, 21)
\$Yblo = GUICtrlCreateInput("Your Block value", 96, 160, 161, 21)
\$Ypar = GUICtrlCreateInput("Your Parry value", 96, 136, 161, 21)
\$Sall = GUICtrlCreateInput("Total outcome of all the % are calculated and shown here", 96, 184, 289, 21)
\$Parry = GUICtrlCreateButton("Parry", 16, 136, 73, 17, \$WS_GROUP)
\$Block = GUICtrlCreateButton("Block", 16, 160, 73, 17, \$WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
\$Header = GUICtrlCreatePic("", 16, 8, 377, 57, BitOR(\$SS_NOTIFY, \$WS_GROUP, \$WS_CLIPSIBLINGS))
GUISetState(@SW_SHOW)
While 1
\$nMsg = GUIGetMsg()
Switch \$nMsg
Case \$GUI_EVENT_CLOSE
Exit

Case \$Parry
CalculateParry()

Case \$Block
CalculateBlock()

EndSwitch
WEnd

Func CalculateParry()
\$parrymath = Number((\$parryvalue - \$enemyaccuracy) / 10)
\$parrypercent = GUICtrlSetData(\$Cparcha, \$parrymath)
EndFunc   ;==>CalculateParry

Func CalculateBlock()
\$blockmath = Number((\$blockvalue - \$enemyaccuracy) / 10)
\$blockpercent = GUICtrlSetData(\$Cblocha, \$blockmath)
EndFunc   ;==>CalculateBlock

\$70perctodegree = 40.1070457
\$30perctodegree = 17.1887339
\$40perctodegree = 22.9183118
\$50perctodegree = 28.6478898
\$var1 = cos((180 * \$30perctodegree) * \$totalevadepercent)
\$var2 = cos((180 * \$40perctodegree) * \$totalparrypercent)
\$var3 = cos((180 * \$50perctodegree) * \$totalblockpercent)
\$addedall = cos((180 * \$70perctodegree) * \$var1 + (180 * \$70perctodegree) * \$var2 + (180 * \$70perctodegree) * \$var3)
Edited by Agent

##### Share on other sites

Look up the functions Int, Ceiling and Floor.

If you want to test if the input in an edit is a negative number all you need is

If Number(GuiCrtlRead(\$input)) < 0 then \$itsnegative = True

These are very basic things though and the help file should be where you look. But perhaps I have not understood.

Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.

##### Share on other sites

as martin said.

int ((\$var1 - \$var2) / 10) = ??

it SHOULD bring up a whole number.

##### Share on other sites

lol omg im going insane, think im gonna try a slightly different formula real quick see if that fixes it..

ok that fixed it... case closed for now

had to do different math, kept including failure percentages but not success percentages =\ so XD

Edited by Agent

##### Share on other sites

Say what?

That means exactly what is says, \$Var1 is possibly used before declaration.

We can't really help you any better unless you tell us what the problem is, and maybe post a reproducer (short but runnable).

Ha guys,

just play around with this code.

Dave

```#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
\$Form1 = GUICreate("Form1", 233, 254, 255, 147)
\$Input1 = GUICtrlCreateInput("Input1", 40, 104, 145, 21)
\$Input2 = GUICtrlCreateInput("Input2", 40, 144, 145, 21)
\$Label1 = GUICtrlCreateLabel("                                              ", 16, 32, 200, 29)
;GUICtrlSetFont(-1, 16, 800, 0, "Bell MT")
;GUICtrlSetBkColor(-1, 0xFFFFFF)
\$Button1 = GUICtrlCreateButton("add", 72, 208, 75, 25, \$WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Global \$a=0, \$b=0, \$c=0
;input \$a
;input \$b
\$c = \$a + \$b
\$Label1 = GUICtrlCreateLabel(\$c, 16, 32, 200, 29)
GUICtrlSetFont(-1, 16, 800, 0, "Bell MT")
GUICtrlSetBkColor(-1, 0xFFFFFF)
Return
EndFunc

While 1
\$nMsg = GUIGetMsg()
Switch \$nMsg
Case \$GUI_EVENT_CLOSE
Exit

;Case \$Form1

Case \$Input1
Case \$Input2
Case \$Button1

EndSwitch
WEnd```
Edited by DaveB

##### Share on other sites

Hi DaveB.

Every time you show a new value you are creating another label. You are giving it the reference \$Label1 so you end up with lots of labels underneath the new one and you have lost the references to them so you can't do anything to them without a lot of effort.

Don't create a new component when you want to update it, just update it. If you want to create a replacement component then delete the old one first.

```#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#region ### START Koda GUI section ### Form=
\$Form1 = GUICreate("Form1", 233, 254, 255, 147)
\$Input1 = GUICtrlCreateInput("Input1", 40, 104, 145, 21)
\$Input2 = GUICtrlCreateInput("Input2", 40, 144, 145, 21)
\$Label1 = GUICtrlCreateLabel("                                              ", 16, 32, 200, 29)
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetFont(-1, 16, 800, 0, "Bell MT")
\$Button1 = GUICtrlCreateButton("add", 72, 208, 75, 25, \$WS_GROUP)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

While 1
\$nMsg = GUIGetMsg()
Switch \$nMsg
Case \$GUI_EVENT_CLOSE
Exit

Case \$Button1

EndSwitch
WEnd

Return

Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.

## Create an account

Register a new account

×

• Wiki

• Back

• Git