Omga4000 Posted December 29, 2012 Posted December 29, 2012 Hello I was wondering if it is possible to create a function that constantly checks the Input to see if Digit Grouping is needed. (For example: If I write 1000 it automatically changes it to 1,000. Like the calculator does) My code has Hebrew writing, but it shouldn't bother you much. Here is my code: expandcollapse popup#include #include #include #include #include #include #Region ### START Koda GUI section ### Form=c:\program files (x86)\autoit3\koda 1.7.30\forms\form1.kxf $GoogleForm = GUICreate("Google Adwords", 321, 505, 617, 237) $Budget_Label = GUICtrlCreateLabel("תקציב לפרסום בגוגל", 192, 24, 113, 17) $Budget_Input = GUICtrlCreateInput("", 48, 20, 121, 21) $Camp_Cost_Label = GUICtrlCreateLabel("*עלות ניהול קמפיין", 199, 68, 105, 17) $Camp_Cost_Input = GUICtrlCreateInput("", 48, 64, 121, 21, $ES_READONLY) $Click_Label = GUICtrlCreateLabel("עלות קליק (ממוצע)", 200, 112, 101, 17) $Click_Input = GUICtrlCreateInput("", 48, 108, 121, 21) $Land_Label = GUICtrlCreateLabel("*דף נחיתה ייעודי", 207, 156, 93, 17) $Land_Input = GUICtrlCreateInput("", 48, 152, 121, 21) $Phone_Label = GUICtrlCreateLabel("*פלאפון ייעודי", 220, 200, 84, 17) $Phone_Combo = GUICtrlCreateCombo("", 48, 196, 121, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL), $WS_EX_LAYOUTRTL) GUICtrlSetData(-1, "לא|כן - ₪200") $Profit_Label = GUICtrlCreateLabel("רווח מלקוח", 237, 244, 63, 17) $Profit_Input = GUICtrlCreateInput("", 48, 240, 121, 21) $Closing_Label = GUICtrlCreateLabel("יחס סגירה", 244, 288, 57, 17) $Closing_Combo = GUICtrlCreateCombo("", 49, 284, 121, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL), $WS_EX_LAYOUTRTL) GUICtrlSetData(-1, "1 מתוך 10|2 מתוך 10|3 מתוך 10|4 מתוך 10|5 מתוך 10|6 מתוך 10|7 מתוך 10|8 מתוך 10|9 מתוך 10|10 מתוך 10") $OK_Button = GUICtrlCreateButton("!חשב", 136, 328, 75, 25) $Expense_Label = GUICtrlCreateLabel("הוצאה שנתית", 213, 372, 74, 17) $Expense_Input = GUICtrlCreateInput("", 64, 368, 121, 21) $Income_Label = GUICtrlCreateLabel("הכנסה שנתית", 217, 416, 73, 17) $Income_Input = GUICtrlCreateInput("", 64, 412, 121, 21) $Total_Label = GUICtrlCreateLabel ("סה''כ רווח שנתי", 205, 460, 85, 17) $Total_Input = GUICtrlCreateInput("", 64, 456, 121, 21) $Label1 = GUICtrlCreateLabel("תשלום חד-פעמי*", 249, 488, 70, 17) GUICtrlSetFont(-1, 8, 400, 0, "MS Serif") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $OK_Button $Budget = GUICtrlRead($Budget_Input) If $Budget >= 10000 Then GUICtrlSetData($Camp_Cost_Input, "30%") EndIf If $Budget <= 10000 AND $Budget >= 0.01 Then GUICtrlSetData($Camp_Cost_Input, "15%") Else MsgBox (1, "!שגיאה", "!אנא הכנס תקציב") EndIf $Click = GUICtrlRead($Click_Input) $oLand = GUICtrlRead($Land_Input) If $oLand >= 1 AND $oLand <=9 Then ;Calculates the total cost of Landing Pages - Case 1-9 $nLand = $oLand * "550" $fLand = $oLand & " x" & " 550" & "₪" & " = " & $nLand & "₪" $var = StringMid($fLand, 1, 1) _ResetInput($Land_Input) $nLand = $var * "550" $fLand = $var & " x" & " 550" & "₪" & " = " & $nLand & "₪" GUICtrlSetData($Land_Input, $fLand) EndIf If $oLand >= 10 AND $oLand <=99 Then ;Calculates the total cost of Landing Pages - Case 10-99 $nLand = $oLand * "550" $fLand = $oLand & " x" & " 550" & "₪" & " = " & $nLand & "₪" $var = StringMid($fLand, 1, 2) _ResetInput($Land_Input) $nLand = $var * "550" $fLand = $var & " x" & " 550" & "₪" & " = " & $nLand & "₪" GUICtrlSetData($Land_Input, $fLand) EndIf If $oLand >= 100 Then ;Special order for god damn rich people! MsgBox(1, "יש כסף, אה?", ":יא טחון.. צלצל להצעה" & @CR & "052-5317772") $nLand = "1" EndIf $Phone = GUICtrlRead($Phone_Combo) If $Phone = "כן - ₪200" Then $Phone = 200 Else $Phone = 0 EndIf $Profit = GUICtrlRead($Profit_Input) $Closing = GUICtrlRead($Closing_Combo) $oExpense = $Budget*12 + $nLand + $Phone $Expense = GUICtrlSetData($Expense_Input, $oExpense) ;Total Expense $oBudget = GUICtrlRead($Budget_Input) $oClick = GUICtrlRead($Click_Input) $oClosing = GUICtrlRead($Closing_Combo) $oProfit = GUICtrlRead($Profit_Input) If $oClosing = "1 מתוך 10" Then $oCash = $oBudget / $oClick * 0.1 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 1/10 EndIf If $oClosing = "2 מתוך 10" Then $oCash = $oBudget / $oClick * 0.2 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 2/10 EndIf If $oClosing = "3 מתוך 10" Then $oCash = $oBudget / $oClick * 0.3 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 3/10 EndIf If $oClosing = "4 מתוך 10" Then $oCash = $oBudget / $oClick * 0.4 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 4/10 EndIf If $oClosing = "5 מתוך 10" Then $oCash = $oBudget / $oClick * 0.5 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 5/10 EndIf If $oClosing = "6 מתוך 10" Then $oCash = $oBudget / $oClick * 0.6 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 6/10 EndIf If $oClosing = "7 מתוך 10" Then $oCash = $oBudget / $oClick * 0.7 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 7/10 EndIf If $oClosing = "8 מתוך 10" Then $oCash = $oBudget / $oClick * 0.8 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 8/10 EndIf If $oClosing = "9 מתוך 10" Then $oCash = $oBudget / $oClick * 0.9 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 9/10 EndIf If $oClosing = "10 מתוך 10" Then $oCash = $oBudget / $oClick * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 10/10 EndIf $var1 = GUICtrlRead($Expense_Input) $var2 = GUICtrlRead($Income_Input) $Total_Income_Cash = $var2 - $var1 GUICtrlSetData($Total_Input,$Total_Income_Cash) EndSwitch WEnd Func _ResetInput($Land_Input) GUICtrlSetData($Land_Input, "") EndFunc Anyone mind helping? Best Regards, Omga4000.
UEZ Posted December 29, 2012 Posted December 29, 2012 (edited) Try this: #include <String.au3> $i = 123456789 ConsoleWrite(Display1000Seperator($i) & @LF) $i = 9876543210.99 ConsoleWrite(Display1000Seperator($i) & @LF) $i = 100 ConsoleWrite(Display1000Seperator($i) & @LF) $i = "55555" ConsoleWrite(Display1000Seperator($i) & @LF) $i = "99999.123" ConsoleWrite(Display1000Seperator($i) & @LF) Func Display1000Seperator($iNumber, $sSeperator = ",", $bFloat = False) ;coded by UEZ 2012 If $iNumber = "" Then SetError(1, 0, 0) Local $1000 If IsInt(Number($iNumber)) Then $1000 = _StringReverse(StringRegExpReplace(_StringReverse($iNumber), ".{3}", "$0" & $sSeperator)) If StringLeft($1000, 1) = $sSeperator Then $1000 = StringTrimLeft($1000, 1) If $bFloat Then Return $1000 & ".00" Return $1000 ElseIf IsFloat(Number($iNumber)) Then Local $1000 = _StringReverse(StringRegExpReplace(_StringReverse(StringRegExpReplace($iNumber, "(\d+)\..*", "$1")), ".{3}", "$0" & $sSeperator)) If StringLeft($1000, 1) = $sSeperator Then $1000 = StringTrimLeft($1000, 1) Return $1000 & StringRegExpReplace($iNumber, "\d+(\..*)", "$1") EndIf Return SetError(2, 0, 0) EndFunc For your code: expandcollapse popup#include <String.au3> #include <EditConstants.au3> #include <ComboConstants.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> #region ### START Koda GUI section ### Form=c:\program files (x86)\autoit3\koda 1.7.30\forms\form1.kxf $GoogleForm = GUICreate("Google Adwords", 321, 505, 617, 237) $Budget_Label = GUICtrlCreateLabel("תקציב ×œ×¤×¨×¡×•× ×‘×’×•×’×œ", 192, 24, 113, 17) $Budget_Input = GUICtrlCreateInput("", 48, 20, 121, 21, $ES_NUMBER) $Camp_Cost_Label = GUICtrlCreateLabel("*עלות × ×™×”×•×œ קמפיין", 199, 68, 105, 17) $Camp_Cost_Input = GUICtrlCreateInput("", 48, 64, 121, 21, $ES_READONLY) $Click_Label = GUICtrlCreateLabel("עלות קליק (ממוצע)", 200, 112, 101, 17) $Click_Input = GUICtrlCreateInput("", 48, 108, 121, 21) $Land_Label = GUICtrlCreateLabel("*דף × ×—×™×ª×” ייעודי", 207, 156, 93, 17) $Land_Input = GUICtrlCreateInput("", 48, 152, 121, 21) $Phone_Label = GUICtrlCreateLabel("*פל×פון ייעודי", 220, 200, 84, 17) $Phone_Combo = GUICtrlCreateCombo("", 48, 196, 121, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL), $WS_EX_LAYOUTRTL) GUICtrlSetData(-1, "ל×|כן - ₪200") $Profit_Label = GUICtrlCreateLabel("רווח מלקוח", 237, 244, 63, 17) $Profit_Input = GUICtrlCreateInput("", 48, 240, 121, 21) $Closing_Label = GUICtrlCreateLabel("יחס סגירה", 244, 288, 57, 17) $Closing_Combo = GUICtrlCreateCombo("", 49, 284, 121, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL), $WS_EX_LAYOUTRTL) GUICtrlSetData(-1, "1 מתוך 10|2 מתוך 10|3 מתוך 10|4 מתוך 10|5 מתוך 10|6 מתוך 10|7 מתוך 10|8 מתוך 10|9 מתוך 10|10 מתוך 10") $OK_Button = GUICtrlCreateButton("!חשב", 136, 328, 75, 25) $Expense_Label = GUICtrlCreateLabel("הוצ××” ×©× ×ª×™×ª", 213, 372, 74, 17) $Expense_Input = GUICtrlCreateInput("", 64, 368, 121, 21) $Income_Label = GUICtrlCreateLabel("×”×›× ×¡×” ×©× ×ª×™×ª", 217, 416, 73, 17) $Income_Input = GUICtrlCreateInput("", 64, 412, 121, 21) $Total_Label = GUICtrlCreateLabel("סה''×› רווח ×©× ×ª×™", 205, 460, 85, 17) $Total_Input = GUICtrlCreateInput("", 64, 456, 121, 21) $Label1 = GUICtrlCreateLabel("×ª×©×œ×•× ×—×“-פעמי*", 249, 488, 70, 17) GUICtrlSetFont(-1, 8, 400, 0, "MS Serif") GUISetState(@SW_SHOW) #endregion ### END Koda GUI section ### GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND') While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $OK_Button $Budget = GUICtrlRead($Budget_Input) If $Budget >= 10000 Then GUICtrlSetData($Camp_Cost_Input, "30%") EndIf If $Budget <= 10000 And $Budget >= 0.01 Then GUICtrlSetData($Camp_Cost_Input, "15%") Else MsgBox(1, "!שגי××”", "!×× × ×”×›× ×¡ תקציב") EndIf $Click = GUICtrlRead($Click_Input) $oLand = GUICtrlRead($Land_Input) If $oLand >= 1 And $oLand <= 9 Then ;Calculates the total cost of Landing Pages - Case 1-9 $nLand = $oLand * "550" $fLand = $oLand & " x" & " 550" & "₪" & " = " & $nLand & "₪" $var = StringMid($fLand, 1, 1) _ResetInput($Land_Input) $nLand = $var * "550" $fLand = $var & " x" & " 550" & "₪" & " = " & $nLand & "₪" GUICtrlSetData($Land_Input, $fLand) EndIf If $oLand >= 10 And $oLand <= 99 Then ;Calculates the total cost of Landing Pages - Case 10-99 $nLand = $oLand * "550" $fLand = $oLand & " x" & " 550" & "₪" & " = " & $nLand & "₪" $var = StringMid($fLand, 1, 2) _ResetInput($Land_Input) $nLand = $var * "550" $fLand = $var & " x" & " 550" & "₪" & " = " & $nLand & "₪" GUICtrlSetData($Land_Input, $fLand) EndIf If $oLand >= 100 Then ;Special order for god damn rich people! MsgBox(1, "יש כסף, ××”?", ":×™× ×˜×—×•×Ÿ.. צלצל להצעה" & @CR & "052-5317772") $nLand = "1" EndIf $Phone = GUICtrlRead($Phone_Combo) If $Phone = "כן - ₪200" Then $Phone = 200 Else $Phone = 0 EndIf $Profit = GUICtrlRead($Profit_Input) $Closing = GUICtrlRead($Closing_Combo) $oExpense = $Budget * 12 + $nLand + $Phone $Expense = GUICtrlSetData($Expense_Input, $oExpense) ;Total Expense $oBudget = GUICtrlRead($Budget_Input) $oClick = GUICtrlRead($Click_Input) $oClosing = GUICtrlRead($Closing_Combo) $oProfit = GUICtrlRead($Profit_Input) If $oClosing = "1 מתוך 10" Then $oCash = $oBudget / $oClick * 0.1 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 1/10 EndIf If $oClosing = "2 מתוך 10" Then $oCash = $oBudget / $oClick * 0.2 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 2/10 EndIf If $oClosing = "3 מתוך 10" Then $oCash = $oBudget / $oClick * 0.3 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 3/10 EndIf If $oClosing = "4 מתוך 10" Then $oCash = $oBudget / $oClick * 0.4 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 4/10 EndIf If $oClosing = "5 מתוך 10" Then $oCash = $oBudget / $oClick * 0.5 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 5/10 EndIf If $oClosing = "6 מתוך 10" Then $oCash = $oBudget / $oClick * 0.6 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 6/10 EndIf If $oClosing = "7 מתוך 10" Then $oCash = $oBudget / $oClick * 0.7 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 7/10 EndIf If $oClosing = "8 מתוך 10" Then $oCash = $oBudget / $oClick * 0.8 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 8/10 EndIf If $oClosing = "9 מתוך 10" Then $oCash = $oBudget / $oClick * 0.9 * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 9/10 EndIf If $oClosing = "10 מתוך 10" Then $oCash = $oBudget / $oClick * $oProfit * 12 GUICtrlSetData($Income_Input, $oCash) ;Total income 10/10 EndIf $var1 = GUICtrlRead($Expense_Input) $var2 = GUICtrlRead($Income_Input) $Total_Income_Cash = $var2 - $var1 GUICtrlSetData($Total_Input, $Total_Income_Cash) EndSwitch WEnd Func _ResetInput($Land_Input) GUICtrlSetData($Land_Input, "") EndFunc ;==>_ResetInput Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam) $chk = BitAND($wParam, 0x0000FFFF) Switch $chk Case $Budget_Input GUICtrlSetData($Budget_Input, Display1000Seperator(StringReplace(GUICtrlRead($Budget_Input), ",", ""))) EndSwitch Return $GUI_RUNDEFMSG EndFunc Func Display1000Seperator($iNumber, $sSeperator = ",", $bFloat = False) ;coded by UEZ 2012 If $iNumber = "" Then SetError(1, 0, 0) Local $1000 If IsInt(Number($iNumber)) Then $1000 = _StringReverse(StringRegExpReplace(_StringReverse($iNumber), ".{3}", "$0" & $sSeperator)) If StringLeft($1000, 1) = $sSeperator Then $1000 = StringTrimLeft($1000, 1) If $bFloat Then Return $1000 & ".00" Return $1000 ElseIf IsFloat(Number($iNumber)) Then Local $1000 = _StringReverse(StringRegExpReplace(_StringReverse(StringRegExpReplace($iNumber, "(\d+)\..*", "$1")), ".{3}", "$0" & $sSeperator)) If StringLeft($1000, 1) = $sSeperator Then $1000 = StringTrimLeft($1000, 1) Return $1000 & StringRegExpReplace($iNumber, "\d+(\..*)", "$1") EndIf Return SetError(2, 0, 0) EndFunc ;==>Display1000Seperator If did it only for the 1st input control ($Budget_Input). Br, UEZ Edited December 29, 2012 by UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
Omga4000 Posted December 30, 2012 Author Posted December 30, 2012 (edited) Thank you, that works beautifully! However, now I have another problem. The program doesn't recognize "1,000" as "1000", but as "1". Do I need to define the numbers as Int? Edited December 30, 2012 by Omga4000
UEZ Posted December 30, 2012 Posted December 30, 2012 You have to convert it back to an integer by replacing the "," with "". Br, UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
PhoenixXL Posted December 30, 2012 Posted December 30, 2012 (edited) A simple implementation with regular expressionsGUI - Exampleexpandcollapse popup#include-once #include <WindowsConstants.au3> #include <EditConstants.au3> #include <WinAPI.au3> #include <Array.au3> #cs Keypoints : Commas are added after every third digit -Digits after a decimal are ignored #ce Local $hGUI = GUICreate ( @ScriptName & ' |Phoenix XL', 500, 300 ) Global $iEdit = GUICtrlCreateEdit ( '', 10, 30, 480, 200, $ES_WANTRETURN ) GUICtrlCreateLabel( 'Type Numbers, Commas are automatically added', 10, 10, 450, 20 ) Local $iButton = GUICtrlCreateButton ( 'Get the Original Numbers', 10, 260, 200, 30 ) GUIRegisterMsg ( $WM_COMMAND, 'WM_COMMAND' ) GUISetState( ) Local $sText While 1 Switch GUIGetMsg() Case -3 ; GUI_EVENT_CLOSE ExitLoop Case $iButton $sText = RemoveComma ( GUICtrlRead( $iEdit ) ) GUIDelete () If $sText Then MsgBox ( 64, 'Exitting', $sText ) EndSwitch WEnd Func WM_COMMAND( $hWnd, $iMsg, $wParam, $lParam ) Local $nCode = _WinAPI_HiWord ( $wParam ) Switch $nCode Case $EN_CHANGE Local $sRead = RemoveComma ( GUICtrlRead( $iEdit ) ) GUICtrlSetData( $iEdit , AddComma ( $sRead ) ) EndSwitch EndFunc ;For Adding Commas to Numbers Func AddComma ( $sDigit ) SetExtended ( 1 ) While @extended $sDigit = StringRegExpReplace ( $sDigit, '(?m)(^|[^.\d])(\d+)(\d{3})', '\1\2,\3' ) WEnd Return $sDigit EndFunc ;For Removing the Added Commas Func RemoveComma ( $sString ) SetExtended ( 1 ) While @extended $sString = StringRegExpReplace ( $sString, '(\d+)(,)(\d{3})', '\1\3' ) WEnd Return $sString EndFuncMsgbox - ExampleLocal $iDigits[5] = ['1234555235', ' 1245 1542 5 135 352354254325 ', _ '1232143.4535','f3423556', 'Phoenix XL'] Local $sTemp For $i = 0 To 4 $sTemp = AddComma($iDigits[$i]) Display ( $iDigits[$i], $sTemp, 'Adding Commas' ) Display ( $sTemp, RemoveComma($sTemp), 'Removing Commas' ) Next ;For Adding Commas to Numbers Func AddComma($sDigit) SetExtended(1) While @extended $sDigit = StringRegExpReplace($sDigit, '(?m)(^|[^.\d])(\d+)(\d{3})', '\1\2,\3') WEnd Return $sDigit EndFunc ;==>AddComma ;For Removing the Added Commas Func RemoveComma($sString) SetExtended(1) While @extended $sString = StringRegExpReplace($sString, '(\d+)(,)(\d{3})', '\1\3') WEnd Return $sString EndFunc ;==>RemoveComma Func Display ( $sInput, $sOutput, $sTitle ) MsgBox( 64, $sTitle, StringFormat('Input: %s\nOutput: %s\n\n', $sInput , $sOutput ) ) EndFunc Edited December 30, 2012 by PhoenixXL My code: PredictText: Predict Text of an Edit Control Like Scite. Remote Gmail: Execute your Scripts through Gmail. StringRegExp:Share and learn RegExp.Run As System: A command line wrapper around PSEXEC.exe to execute your apps scripts as System (LSA). Database: An easier approach for _SQ_LITE beginners. MathsEx: A UDF for Fractions and LCM, GCF/HCF. FloatingText: An UDF for make your text floating. Clipboard Extendor: A clipboard monitoring tool. Custom ScrollBar: Scroll Bar made with GDI+, user can use bitmaps instead. RestrictEdit_SRE: Restrict text in an Edit Control through a Regular Expression.
kylomas Posted December 31, 2012 Posted December 31, 2012 (edited) PhoenixXL, I changed your gui example to update the input control in place when the button to revert is actioned. You were deleting the gui but remaining in the message loop. See comments in the code. expandcollapse popup#include-once #include <WindowsConstants.au3> #include <EditConstants.au3> #include <WinAPI.au3> #include <Array.au3> #cs Keypoints : Commas are added after every third digit -Digits after a decimal are ignored #ce Local $hGUI = GUICreate(@ScriptName & ' |Phoenix XL', 500, 300) Global $iEdit = GUICtrlCreateEdit('', 10, 30, 480, 200, $ES_WANTRETURN) GUICtrlCreateLabel('Type Numbers, Commas are automatically added', 10, 10, 450, 20) Local $iButton = GUICtrlCreateButton('Get the Original Numbers', 10, 260, 200, 30) GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND') GUISetState() Local $sText While 1 Switch GUIGetMsg() Case -3 ; GUI_EVENT_CLOSE ExitLoop Case $iButton guictrlsetdata($iedit, RemoveComma(GUICtrlRead($iEdit))) ; <- added this as the gui was deleted but the message loop keeps running - deleted the msgbox and guidelete stmts EndSwitch WEnd Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam) Local $nCode = _WinAPI_HiWord($wParam) Switch $nCode Case $EN_CHANGE Local $sRead = RemoveComma(GUICtrlRead($iEdit)) GUICtrlSetData($iEdit, AddComma($sRead)) EndSwitch EndFunc ;==>WM_COMMAND ;For Adding Commas to Numbers Func AddComma($sDigit) SetExtended(1) While @extended $sDigit = StringRegExpReplace($sDigit, '(?m)(^|[^.\d])(\d+)(\d{3})', '\1\2,\3') WEnd Return $sDigit EndFunc ;==>AddComma ;For Removing the Added Commas Func RemoveComma($sString) SetExtended(1) While @extended $sString = StringRegExpReplace($sString, '(\d+)(,)(\d{3})', '\1\3') WEnd Return $sString EndFunc ;==>RemoveComma Can you PLEASE explain the regular exp<b></b>ression pattern that you are using in the AddComma function? kylomas Edited December 31, 2012 by kylomas Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill
guinness Posted December 31, 2012 Posted December 31, 2012 Another example >> UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018
PhoenixXL Posted December 31, 2012 Posted December 31, 2012 Can you PLEASE explain the regular expression pattern that you are using in the AddComma function?For Sure ;For Adding Commas to Numbers Func AddComma($sDigit) SetExtended(1) While @extended $sDigit = StringRegExpReplace($sDigit, _ '(?m)(^|[^.\d])' & _ ; [First Group] The character preceding a digit(s) can be the starting of the string but not a "digit" or a "decimal point" '(\d+)(\d{3})', ; [Second Group] Atleast one digit after which [Third Group] three digits are present '\1\2,\3' _ ; Insert a Comma after the Second Group ) ; This loop runs until no match is found WEnd Return $sDigit EndFunc ;==>AddComma My code: PredictText: Predict Text of an Edit Control Like Scite. Remote Gmail: Execute your Scripts through Gmail. StringRegExp:Share and learn RegExp.Run As System: A command line wrapper around PSEXEC.exe to execute your apps scripts as System (LSA). Database: An easier approach for _SQ_LITE beginners. MathsEx: A UDF for Fractions and LCM, GCF/HCF. FloatingText: An UDF for make your text floating. Clipboard Extendor: A clipboard monitoring tool. Custom ScrollBar: Scroll Bar made with GDI+, user can use bitmaps instead. RestrictEdit_SRE: Restrict text in an Edit Control through a Regular Expression.
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