Jump to content
SkysLastChance

[SOLVED] Why is my code not looping?

Recommended Posts

SkysLastChance

I know this code is not pretty by any means, but it will not loop. I have used this loop several diffrend times. 

When I take out the this if statment it loops forever so I am guessing ti has to do with this.

Any ideas on cleaning up code is appreciated too.

If $r > $sBox Then
   Exit
   Endif
#include <Excel.au3>
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>



$sBox = InputBox ("Vital Site", "How Many Times")


Excel ()
Logon ()
Sleep (2000)
Auto ()


Func FormatDate($DATE)
    $SPLIT = StringSplit($DATE," ")
    $MM = StringMid($SPLIT[1],5,2)
    $YYYY = StringLeft($SPLIT[1],4)
    $DD = StringMid($SPLIT[1],7,2)
    Return $MM & "/" & $DD & "/" & $YYYY
EndFunc


Func Terminate()
    Exit
EndFunc

HotKeySet(("{ESC}"),"Terminate")



Func Excel ()

While ProcessExists("EXCEL.EXE")
$ms = MsgBox(5,"","Process error.  You have an Excel sheet open.  You must close it in order to let this program work.  Please close it now.")
    If $ms=2 Then Exit
Sleep(250)
WEnd
   Global $sExcelFile = FileOpenDialog("Choose/Create Excel File", @ScriptDir, "(*.xlsx)")

If FileExists($sExcelFile) Then
   Global $oExcel = _Excel_Open ()
   $oExcel = _Excel_BookOpen($oExcel,$sExcelFile) ;this will open the chosen xls file.

Else
   $oExcel = _Excel_Open()
   $oWorkbook = _Excel_BookNew($oExcel, 2);this is here to create the xls file if it does not exist.
   EndIf

EndFunc


Func Logon ()

   $portal = ShellExecute ("C:\Program Files (x86)\MEDITECH\SSDWEB.Universe\SSDWEB.LIVEF.Ring\Client.mtad") ;MediTech
   WinWaitActive ("[CLASS:MagicFS]", "", "MagicFS Dispaly5")
   Sleep (300)
   ControlSend("[CLASS:MagicFS]", "", "", ("{F12}"))
   Sleep (700)
   ControlSend("[CLASS:MagicFS]", "", "", ("{RIGHT}"))
   Sleep (700)
   ControlSend("[CLASS:MagicFS]", "", "", ("{DOWN}"))
   Sleep (700)
   ControlSend("[CLASS:MagicFS]", "", "", ("{RIGHT}"))
   Sleep (700)
   ControlSend("[CLASS:MagicFS]", "", "", ("{RIGHT}"))
   Sleep (700)
   ControlSend("[CLASS:MagicFS]", "", "", ("{RIGHT}"))

EndFunc

WinWaitActive ("[CLASS:MagicFS]", "", "MagicFS Dispaly6")



Func Auto ()

$r = 1

Local $aArray = _Excel_RangeRead($oExcel, Default, Default,1)

For $i = 1 To UBound($aArray) - 1   ;$i =0 Start from row A
      $sR0  = $aArray[$i][0]    ;status
      $sR1  = $aArray[$i][1]    ;first name
      $sR2  = $aArray[$i][2]    ;Last name
      $sR3  = $aArray[$i][3]    ;Last 4 SSN
      $sR4  = $aArray[$i][4]    ;DOB
      $sR5  = $aArray[$i][5]    ;Email Address
      $sR6  = $aArray[$i][6]    ;Mailling Address
      $sR7  = $aArray[$i][7]    ;City
      $sR8  = $aArray[$i][8]    ;state
      $sR9  = $aArray[$i][9]    ;Zip Code
      $sR10 = $aArray[$i][10]   ;Gender
      $sR11 = $aArray[$i][11]   ;Phone



   ControlSend("[CLASS:MagicFS]", "", "", ("{F8}"))
   Sleep (500)
   ControlSend("[CLASS:MagicFS]", "", "", ("{F8}"))
   Sleep (500)
   ControlSend("[CLASS:MagicFS]", "", "", ("N"))
   ControlSend("[CLASS:MagicFS]", "", "", ("{TAB}"))
   Sleep (3000)
   ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR1 & @CR)
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "", ("{TAB}"))
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR2 & @CR)
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "", ("{TAB}"))
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR6& @CR)
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "", ("{TAB}"))
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR7 & @CR)
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR8 & @CR)
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR9 & @CR)
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR11& @CR)
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR5 & @CR) ;Email7
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR5 & @CR)  ;Email
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "", (FormatDate($sR4) & @CR))
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR10 & @CR)
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR3 & @CR)
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "", ("{F8}"))
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "", ("P"))
   Sleep (200)

   $sBox = MsgBox($MB_OK & $MB_TOPMOST,"Patient Portal","After you have entered the patient push OK")
   Sleep (300)
   ControlSend("[CLASS:MagicFS]", "", "", ("{F8 3}"))
   Sleep (200)
   ControlSend("[CLASS:MagicFS]", "", "", ("{ESC}"))
   Sleep (200)
   ControlSend("[CLASS:MagicFS Modal(3)]", "", "", ("{ENTER}"))




$r = $r + 1

If $r > $sBox Then
   Exit
   Endif


Next


EndFunc
Edited by SkysLastChance

Life's simple. You make choices and you don't look back.

Share this post


Link to post
Share on other sites
water

Forget what I posted before.
The solution can be found in the next post.

Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites
zone97

When the msgbox appears and you click ok, you set $sbox to 1, which after the second pass $r will be > $sbox

  • Like 1

 

Spoiler

WinSizer 2.1 (01/04/2017) - Download - [ Windows Layout Manager ]
Folder+Program (12/23/2016) - Download - [ USB Shortcut Creator ]

 

Share this post


Link to post
Share on other sites
water

Good finding :)


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites
Subz

Made a few minor changes that I thought would help:

#include <Excel.au3>
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>

HotKeySet(("{ESC}"),"Terminate")

Global $iBox, $oExcel, $oWorkbook

VitalSite() ;~ Added Input Function
Excel ()
Logon ()
Sleep (2000)
Auto ()

WinWaitActive ("[CLASS:MagicFS]", "", "MagicFS Dispaly6")

Func FormatDate($DATE)
    $SPLIT = StringSplit($DATE," ")
    $MM = StringMid($SPLIT[1],5,2)
    $YYYY = StringLeft($SPLIT[1],4)
    $DD = StringMid($SPLIT[1],7,2)
    Return $MM & "/" & $DD & "/" & $YYYY
EndFunc

Func Terminate()
    Exit
EndFunc

Func VitalSite()
    Local $iMsg
    While 1
        ;~ Turn input into a number
        $iBox = Number(InputBox ("Vital Site", "How Many Times"))
        ;~ If user enters a string or cancels then get them to try again
        If $iBox = 0 Then
            $iMsg = MsgBox(1,'Vital Site', 'Please enter a valid number')
            If $iMsg = 2 Then Exit
        Else
            ExitLoop
        EndIf
    WEnd
EndFunc

Func Excel()
    While ProcessExists("EXCEL.EXE")
        $ms = MsgBox(5,"","Process error.  You have an Excel sheet open.  You must close it in order to let this program work.  Please close it now.")
            If $ms=2 Then Exit
    ;~ Doesn't require sleep since the script is paused by the MsgBox above
    ;~ Sleep(250)
    WEnd
    ;~ Shouldn't use Global Scope inside functions moved to top of script
    Local $sExcelFile = FileOpenDialog("Choose/Create Excel File", @ScriptDir, "(*.xlsx)")

    If FileExists($sExcelFile) Then
        ;~ Shouldn't use Global Scope inside functions moved to top of script
        $oExcel = _Excel_Open ()
        $oWorkbook = _Excel_BookOpen($oExcel,$sExcelFile) ;this will open the chosen xls file.
    Else
        $oExcel = _Excel_Open()
        $oWorkbook = _Excel_BookNew($oExcel, 2);this is here to create the xls file if it does not exist.
   EndIf
EndFunc

Func Logon ()
   $portal = ShellExecute ("C:\Program Files (x86)\MEDITECH\SSDWEB.Universe\SSDWEB.LIVEF.Ring\Client.mtad") ;MediTech
   WinWaitActive ("[CLASS:MagicFS]", "", "MagicFS Dispaly5")
   Sleep (300)
   ControlSend("[CLASS:MagicFS]", "", "", ("{F12}"))
   Sleep (700)
   ControlSend("[CLASS:MagicFS]", "", "", ("{RIGHT}"))
   Sleep (700)
   ControlSend("[CLASS:MagicFS]", "", "", ("{DOWN}"))
   Sleep (700)
   ControlSend("[CLASS:MagicFS]", "", "", ("{RIGHT}"))
   Sleep (700)
   ControlSend("[CLASS:MagicFS]", "", "", ("{RIGHT}"))
   Sleep (700)
   ControlSend("[CLASS:MagicFS]", "", "", ("{RIGHT}"))
EndFunc

Func Auto ()
    Local $r = 1
    Local $aArray = _Excel_RangeRead($oWorkbook)
    ;~ If $iBox is greater than no. of rows in $aArray then $iBox equals the number of rows in $aArray
    If $iBox > (UBound($aArray) - 1) Then $iBox = UBound($aArray) - 1
    For $i = 1 To UBound($aArray) - 1   ;$i =0 Start from row A
        $sR0  = $aArray[$i][0]    ;status
        $sR1  = $aArray[$i][1]    ;first name
        $sR2  = $aArray[$i][2]    ;Last name
        $sR3  = $aArray[$i][3]    ;Last 4 SSN
        $sR4  = $aArray[$i][4]    ;DOB
        $sR5  = $aArray[$i][5]    ;Email Address
        $sR6  = $aArray[$i][6]    ;Mailling Address
        $sR7  = $aArray[$i][7]    ;City
        $sR8  = $aArray[$i][8]    ;state
        $sR9  = $aArray[$i][9]    ;Zip Code
        $sR10 = $aArray[$i][10]   ;Gender
        $sR11 = $aArray[$i][11]   ;Phone
        ControlSend("[CLASS:MagicFS]", "", "", ("{F8}"))
            Sleep (500)
        ControlSend("[CLASS:MagicFS]", "", "", ("{F8}"))
            Sleep (500)
        ControlSend("[CLASS:MagicFS]", "", "", ("N"))
        ControlSend("[CLASS:MagicFS]", "", "", ("{TAB}"))
            Sleep (3000)
        ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR1 & @CR)
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "", ("{TAB}"))
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR2 & @CR)
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "", ("{TAB}"))
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR6& @CR)
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "", ("{TAB}"))
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR7 & @CR)
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR8 & @CR)
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR9 & @CR)
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR11& @CR)
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR5 & @CR) ;Email7
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR5 & @CR)  ;Email
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "", (FormatDate($sR4) & @CR))
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR10 & @CR)
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "Edit1", $sR3 & @CR)
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "", ("{F8}"))
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "", ("P"))
            Sleep (200)
        $hBox = MsgBox($MB_OK & $MB_TOPMOST,"Patient Portal","After you have entered the patient push OK")
        ControlSend("[CLASS:MagicFS]", "", "", ("{F8 3}"))
            Sleep (200)
        ControlSend("[CLASS:MagicFS]", "", "", ("{ESC}"))
            Sleep (200)
        ControlSend("[CLASS:MagicFS Modal(3)]", "", "", ("{ENTER}"))
        $r += 1
        If $r > $iBox Then Exit
    Next
EndFunc

 

  • Like 1

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • Iceburg
      By Iceburg
      Hi everyone, I'm at best a noobie.  I have read through the Array helps, and specifically the 2D array help file, and I'm struggling to get my code working.
      I have an array that is read from a file, thats working great.  I'm trying to do some math on the array, so I can find the largest, average, lowest, day over day change %, etc.
      The array read working fine, I get 43 lines, line 0 is 44, and then I get data that looks like
      0519 $10,000
      0520 $10,001
      0521 $10,002
      The data in this array is a single 1D array, breaking it out into 2 columns so I can do the math is what I can get to happen.  
      How do I reference the array to store this data?  Second, how do I assign this data to the appropriate row/column?
      Thanks in advance.
      Dim $all_cash_amounts[UBound($aInput)][2] Dim $max_amount_in_account Dim $min_amount_in_account _FileReadToArray($LC_Check_file_path, $aInput) _ArrayDisplay($aInput) local $date = StringRegExp($aInput[1], "(\d\d\d\d)", 1) local $cash = StringRegExp($aInput[1], "\d+\s(-?[0-9\.\,]+)", 1) ConsoleWrite("Date is: " & $date & @CRLF) For $i = 1 To UBound($aInput)-1     $date = StringRegExp($aInput[$i], "(\d\d\d\d)", 1)     $all_cash_amounts[$i][2] = $date[$i][0], $cash[$i][1]      Next _ArrayDisplay($all_cash_amounts)  
    • OldGuyWalking
      By OldGuyWalking
      Given an array with multiple columns that is displayed in a listview,
       ===> What is the fastest/most efficient way to create and manage multiple filters and display results in ListView.
      I have a text file that loads into a listview that has string, numeric, and date columns.  The main file contains about 5100 rows. It's loaded into an array and (in this ListView) it's pre-filtered to display a range of rows based on a start and end date.  On the form I have menu options for various filters. (see below).
      I have options to filter on an "Air Date" column (=Today, >=Today, <=Today) and on a numeric field that is either 1 or 0 that indicate Active or Ended.

      For each filter option I have a prebuilt array that holds a subset of the main array based on a single filter.  For the list above I have the main Array and 5 additional arrays.  None of the arrays are updated since this is for "view only" purposes.  This is a short list and I could have done the filtering "live" but I have several of these forms and so kept the same functionality in each. I have another ListView that displays the complete 5100 row list with 3 filters that, when building the filters live was considerably slower than using prebuilt arrays.
      If I want to expand past simple single column filtering, using an array for each filter becomes cumbersome especially if I want to combine filters using AND & OR.
      The text file I'm working with has 16 columns. If I setup filters for 4 columns and include AND / OR capability that would require prebuilding 24 arrays to cover the various combinations.
      If using the slower method of building a filtered array in real time each time a different filter is selected is the only way to go with this then I'll live with it. It is less overhead. .
      Below is the code I'm currently using to "filter" an array.  My next change was going to add AND / OR functionality (see the info above the header for where I was going with this) .
      ; Description ...: Delete rows from an array and only keep rows that meet the crtieria of identified columns. ; ; Next Change: Add AND/OR to combine filters. Use array to hold multiple criteria and values? ; ; Local $aCriteria[][] = [["",$iColNbr1, $sOperator1, $vValue1], ["AND",$iColNbr2, $sOperator2, $vValue2], ["OR",$iColNbr3, $sOperator3, $vValue3]] ; The first set of criteria ["", $iColNbr1, $sOperator1, $vValue1] must start with a "". ; If anything is entered in that first parameter it will be ignored. ; If the first parameter in any additional criteria set is left blank, or it is not OR, it will default to AND. ; If $aArray is 1 dimension with more than one set of criteria, only the first set will be used. ; Any criteria that uses a column that is less than 0 or higher than the total number of columns in the array will return an error. ; ; Recognized data types for this function are: S (String), D (Date), N (Number). ; ; Recognized Operators are: "EQ", "NEQ", "IN", "GT", "GE", "LT", "LE", "BETWEEN". ; ****** Not all operators work with all data types. ; #FUNCTION# ==================================================================================================================== ; Name ..........: _ArrayFilter ; Description ...: Delete rows from an array and only keep rows that meet the crtieria of identified columns. ; Syntax ........: _ArrayFilter(Byref $aArray[, $iCol = 0[, $sOperator = "EQ"[, $vValue = ""[, $iOptionBase = 0]]]]) ; Parameters ....: $aArray - Array being filtered. ; $iCol - [optional] Column to filter. Default is 0. ; $sOperator - [optional] Operator. Default is "EQ". ; $vValue - [optional] Criteria to compare the column/row value against. ; $iOptionBase - [optional] Starting row. Default is 0. ; Return values .: None ; Author ........: OldGuyWalking ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _ArrayFilter(ByRef $aArray, $iCol = 0, $sOperator = "EQ", $vValue = "", $iOptionBase = 0) Local $hFunc = _ArrayFilter $vValue = StringStripWS($vValue, 3) If $vValue = "[Today]" Then $vValue = _NowCalcDate() EndIf Local $sMsg Local $sMsgHdr Local $n1 Local $sDeleteIndex Local $aDeleteIndex Local $iCnt = 0 Local $iRows Local $iColMax Local $iDim Local $sData Local $sVType Local $sDType Local $LBound Local $iDiff If $iOptionBase <> 0 Then $iOptionBase = 1 EndIf If _IsValueEmpty($aArray) Then Return SetError(1, 0, "") EndIf $iDim = UBound($aArray, $UBOUND_DIMENSIONS) If $iDim = 1 Then If $iCol <> 0 Then $iCol = 0 EndIf EndIf If $iDim = 2 Then $iColMax = UBound($aArray, $UBOUND_COLUMNS) - 1 If $iCol > $iColMax Or $iCol < 0 Then Return SetError(1, 0, "") EndIf EndIf If Not _IsBetween($iDim, 1, 2) Then ;############### MSG2 - START ############### $sMsgHdr = FuncName($hFunc) & " :Line: " & @ScriptLineNumber & " :Error= " & @error $sMsg = "Invalid Dimensioned Array. Must be a 1 or 2 dimensional array." MsgBox(0, $sMsgHdr, $sMsg) Return SetError(1, 0, "") ;############### MSG2 - END ############### EndIf ; Identify what the value is ; If it is not a String, Int, Number, or Date then skip. Select Case _DateIsValid($vValue) = 1 $sVType = "D" Case IsNumber($vValue) = 1 $sVType = "N" Case IsString($vValue) = 1 $sVType = "S" Case Else ;############### MSG2 - START ############### $sMsgHdr = FuncName($hFunc) & " :Line: " & @ScriptLineNumber & " :Error= " & @error $sMsg = "Comparison value must be a " & @CRLF & _ "1. Date in YYYY/MM/DD format " & @CRLF & _ "2. A string " & @CRLF & _ "3. A number " & @CRLF MsgBox(0, $sMsgHdr, $sMsg) Return SetError(1, 0, "") ;############### MSG2 - END ############### EndSelect $iCnt = 0 For $n1 = UBound($aArray) - 1 To $iOptionBase Step -1 If $iDim = 1 Then $sData = StringStripWS($aArray[$n1], 3) ElseIf $iDim = 2 Then $sData = StringStripWS($aArray[$n1][$iCol], 3) EndIf Select Case _DateIsValid($sData) = 1 $sDType = "D" Case IsNumber($sData) = 1 $sDType = "N" Case IsString($sData) = 1 $sDType = "S" Case Else $sDType = "U" EndSelect If _IsValueEmpty($sData) Then $sDeleteIndex &= $n1 & "," $iCnt += 1 ContinueLoop ; $sDType = $sVType EndIf If Not _IsValueEmpty($sData) And $sDType <> $sVType Then $sDeleteIndex = $sDeleteIndex & $n1 & "," $iCnt += 1 ContinueLoop EndIf Select Case $sOperator = "EQ" Switch $sDType Case "D" $iDiff = _DateDiff("D", $vValue, $sData) If $iDiff = 0 Then ContinueLoop EndIf $sDeleteIndex &= $n1 & "," $iCnt += 1 ContinueLoop Case "S" If $sData = $vValue Then ContinueLoop EndIf $sDeleteIndex &= $n1 & "," $iCnt += 1 ContinueLoop Case "N" If $sData = $vValue Then ContinueLoop EndIf $sDeleteIndex &= $n1 & "," $iCnt += 1 ContinueLoop EndSwitch Case $sOperator = "NEQ" Switch $sDType Case "D" If $sData <> $vValue Then ContinueLoop EndIf $sDeleteIndex &= $n1 & "," $iCnt += 1 ContinueLoop Case "S" If $sData <> $vValue Then ContinueLoop EndIf $sDeleteIndex &= $n1 & "," $iCnt += 1 ContinueLoop Case "N" If $sData <> $vValue Then ContinueLoop EndIf $sDeleteIndex &= $n1 & "," $iCnt += 1 ContinueLoop EndSwitch Case $sOperator = "IN" Switch $sDType Case "S" If StringInStr($sData, $vValue) Then ContinueLoop EndIf $sDeleteIndex &= $n1 & "," $iCnt += 1 ContinueLoop EndSwitch Case $sOperator = "GT" Switch $sDType Case "N" If $sData > $vValue Then ContinueLoop EndIf $sDeleteIndex &= $n1 & "," $iCnt += 1 ContinueLoop Case "D" $iDiff = _DateDiff("D", $vValue, $sData) If $iDiff > 0 Then ContinueLoop EndIf $sDeleteIndex &= $n1 & "," $iCnt += 1 ContinueLoop EndSwitch Case $sOperator = "GE" Switch $sDType Case "N" If $sData >= $vValue Then ContinueLoop EndIf $sDeleteIndex &= $n1 & "," $iCnt += 1 ContinueLoop Case "D" $iDiff = _DateDiff("D", $vValue, $sData) If $iDiff >= 0 Then ContinueLoop EndIf $sDeleteIndex &= $n1 & "," $iCnt += 1 ContinueLoop EndSwitch Case $sOperator = "LT" Switch $sDType Case "N" If $sData < $vValue Then ContinueLoop EndIf $sDeleteIndex &= $n1 & "," $iCnt += 1 ContinueLoop Case "D" $iDiff = _DateDiff("D", $vValue, $sData) If $iDiff < 0 Then ContinueLoop EndIf $sDeleteIndex &= $n1 & "," $iCnt += 1 ContinueLoop EndSwitch Case $sOperator = "LE" Switch $sDType Case "N" If $sData <= $vValue Then ContinueLoop EndIf $sDeleteIndex &= $n1 & "," $iCnt += 1 ContinueLoop Case "D" $iDiff = _DateDiff("D", $vValue, $sData) If $iDiff <= 0 Then ContinueLoop EndIf $sDeleteIndex &= $n1 & "," $iCnt += 1 ContinueLoop EndSwitch EndSelect Next If $iCnt > 0 Then _DeleteArrayRows($aArray, $sDeleteIndex) EndIf EndFunc ;==>_ArrayFilter Thanks in advance.
      OldGuyWalking
    • MyEarth
      By MyEarth
      Hello. I have a 1D array. Is made in this way:
      1. This is a line Messages: a message etc Context: a context etc 2. This is a line Messages: a message etc Context: a context etc 3. This is a line Messages: a message etc Correction: a correction etc Context: a context etc I need to make something like:
      1. This is a line|Messages: a message etc|Context: a context etc 2. This is a line|Messages: a message etc|Context: a context etc 3. This is a line|Messages: a message etc|Correction: a correction|Context: a context etc For exporting in another software. I need to split every time there is a number when the line start, can be 1. until something like 3.976. Since i don't know if there a 2 line after a number or 3 i have opened this thread. Thanks
    • FMS
      By FMS
      Hello,
      The last couple of day's I was searching on this forum for the best way to put array's inside array's.
      The best example's i found where a little outdatet (2010) whit a lot of pro's and con's.
      Now I've a big script where a lot of computations and big array's are involved, so speed is a big issue.
      Also I wanna try the script below but don't know iff speed is a problem this way or maybe there is a better way to do this.

      Does somebody know's the best way to put array's inside array's and get the data back from them?
      I've made an example of something I was thinking about.
      (maybe something totaly wrong but I'm open for sugestions)
      I'm doing it this way because I don't think I can access the data inside the array (and doing some calculations to it) some other way if the array is inside another array.
      Or is there?
      Thanks in advanced.
      #include <Array.au3> Global $aArray[Random(5,10,1)][Random(5,10,1)] Global $Holder[2][2] For $x = 0 To UBound($aArray,1) - 1 For $y = 0 To UBound($aArray,2) - 1 $aArray[$x][$y] = Round(Random(-1,1),4) Next Next $Holder[0][0] = $aArray $aArray = "" Global $get_array = $Holder[0][0] _ArrayDisplay($get_array)  
    • FMS
      By FMS
      Hello,
      I'm trying to randomly change some cells in a array on a given percentage.
      at this point I 've a array whit all 0's and want to change some cells to 1.
      I'm not shure how to do this in a good coding sort of way.
      Also maybe there is a build in function whish I'm not aware of.
      Does somebody know how I can do this in a easy way?
      I was trying to get the total count of cells and get the percentage of it.
      And was stuck when i wanna change the cell.
      please advice, thanks in advanced for your help.
      #include <Array.au3> Global $percentage = 0.2 Global $aArray[Random(10,30,1)][Random(10,30,1)] For $x = 0 To UBound($aArray,1) - 1 For $y = 0 To UBound($aArray,2) - 1 $aArray[$x][$y] = 0 Next Next _ArrayDisplay($aArray) randomize() _ArrayDisplay($aArray) Func randomize() Local $total_to_change = ((UBound($aArray,1) * UBound($aArray,2)) / 100) * $percentage ConsoleWrite( "$total_to_change = " & $total_to_change & @LF ) ConsoleWrite( "total in array = " & (UBound($aArray,1) * UBound($aArray,2)) & @LF ) EndFunc  
×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.