Asd123456 Posted July 25, 2009 Posted July 25, 2009 I've made this script but it doesn't work well. The VolumeDown function works great but VolumeUp does not, and I have no idea why. #include <Audio.au3> HotKeySet("^!{NumpadAdd}", "_VolumeUp") HotKeySet("^!{NumpadSub}", "_VolumeDown") _SoundSetMasterVolume(50) While 1 Sleep(1) WEnd Func _VolumeUp() $vol = _SoundGetMasterVolume() If Not $vol = 100 Then _SoundSetMasterVolume($vol + 5) EndIf EndFunc ;==>_VolumeUp Func _VolumeDown() $vol = _SoundGetMasterVolume() If Not $vol = 0 Then _SoundSetMasterVolume($vol - 5) EndIf EndFunc ;==>_VolumeDown
Moderators Melba23 Posted July 26, 2009 Moderators Posted July 26, 2009 Asd123456,It is a logic problem in your code with the Boolean NOT.Your current code If Not $vol = 100 actually translates to If (Not $vol) = 100. As $vol is True (positive), using NOT will change it to False (zero), which is never equal to 100, and thus you never get the increase in $vol.So change your code to If Not ($vol = 100) and all will well as you are now testing the equivalence of $vol and 100 - which is what you want. You should also change the similar line in the other function - it only works by chance because you are testing $vol against zero!This can catch anyone out unless they are really experienced (and careful) so do not feel bad about it! >_< You need to be very particular about parentheses with Boolean operators. This topic shows how even quite experienced coders can get confused....Personally I try to avoid using NOT in simple arithmetical expressions - in this case I would have used If $vol <> 100 instead.M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Asd123456 Posted July 26, 2009 Author Posted July 26, 2009 Asd123456, It is a logic problem in your code with the Boolean NOT. Your current code If Not $vol = 100 actually translates to If (Not $vol) = 100. As $vol is True (positive), using NOT will change it to False (zero), which is never equal to 100, and thus you never get the increase in $vol. So change your code to If Not ($vol = 100) and all will well as you are now testing the equivalence of $vol and 100 - which is what you want. You should also change the similar line in the other function - it only works by chance because you are testing $vol against zero! This can catch anyone out unless they are really experienced (and careful) so do not feel bad about it! >_< You need to be very particular about parentheses with Boolean operators. This topic shows how even quite experienced coders can get confused.... Personally I try to avoid using NOT in simple arithmetical expressions - in this case I would have used If $vol <> 100 instead. M23 Thanks a lot M23
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now