UEZ Posted November 22, 2010 Posted November 22, 2010 And this version: expandcollapse popup#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Array.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 441, 342, 192, 124) $Input1 = GUICtrlCreateInput("7,8,13,14,15,20", 48, 32, 257, 21) $Input2 = GUICtrlCreateInput("25", 48, 120, 257, 21) $Button1 = GUICtrlCreateButton("Button1", 88, 192, 169, 25) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### Local $aArray1, $aArray2 While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Button1 $aArray1 = StringSplit(GUICtrlRead($Input1), ",", 2) $aArray2 = GUICtrlRead($Input2) MsgBox(0, "Test", ArrayExclude($aArray1, $aArray2)) EndSelect WEnd Func ArrayExclude($aA1, $end = 25, $start = 1) Local $i, $j = 0 Local $aA2[$end - $start + 1] For $i = $start To $end $aA2[$j] = $i $j += 1 Next $j = 0 For $i = 0 To UBound($aA1) - 1 $aA1[$i] = Number($aA1[$i]) While $j < UBound($aA2) $aA2[$j] = Number($aA2[$j]) If $aA2[$j] = $aA1[$i] Then _ArrayDelete($aA2, $j) $j -= 2 EndIf $j += 1 WEnd $j = 0 Next _ArraySort($aA2) $string = $aA2[0] For $i = 1 To UBound($aA2) - 1 If $aA2[$i] - $aA2[$i -1] <> 1 Then $string &= "-" & $aA2[$i - 1] & "," & $aA2[$i] Next $string &= "-" & $aA2[$i - 1] Return $string EndFunc 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!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
Tvern Posted November 22, 2010 Posted November 22, 2010 (edited) You probably want to read up a bit on arrays. They are incredibly usefull, but you need to know how to declare/copy and modify them. (You where declaring an array in an improper way)I've fixed the script and modified the function to return a string as that seems to be what you are looking for.I've also fixed a mistake of my own:( $aExclude[$i-1] - $iEnd instead of $iEnd - $aExclude[$i-1])expandcollapse popup#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Array.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 441, 342, 192, 124) $Input1 = GUICtrlCreateInput("7,8,13,14,15,20", 48, 32, 257, 21) $Input2 = GUICtrlCreateInput("25", 48, 120, 257, 21) $Button1 = GUICtrlCreateButton("Button1", 88, 192, 169, 25) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Button1 Global $aArray1 = StringSplit(GUICtrlRead($Input1), ",", 2) ;just use $aArray directly instead of copying to another one Global $sResult = _ArrayInvert($aArray1, 1, GUICtrlRead($Input2)) ;you had an additional bracket before GuiCtrlRead MsgBox(0,"Result",$sResult) EndSelect WEnd Func _ArrayInvert(Const ByRef $aExclude, $iStart, $iEnd) If Not IsArray($aExclude) Then Return SetError(1) If $iStart >= $iEnd Then Return SetError(2) If $iStart > $aExclude[0] Then Return SetError(3) If $iEnd < $aExclude[UBound($aExclude)-1] Then Return SetError(4) Local $sReturn For $i = 0 To UBound($aExclude)-1 Switch $aExclude[$i] - $iStart Case 0 Case 1 $sReturn &= "," & $iStart Case Else $sReturn &= "," & $iStart & "-" & $aExclude[$i]-1 EndSwitch $iStart = $aExclude[$i]+1 Next Switch $iEnd - $aExclude[$i-1] Case 0 Case 1 $sReturn &= "," & $iEnd Case Else $sReturn &= "," & $aExclude[$i-1]+1 & "-" & $iEnd EndSwitch Return StringTrimLeft($sReturn,1) EndFuncEdit: aww too slow. Edited November 22, 2010 by Tvern
furuseth Posted November 22, 2010 Posted November 22, 2010 (edited) Mille grazie UEZ & Tvern. Both versions and autors are working perfectly. Thx again Furuseth Edited November 23, 2010 by furuseth
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