Jump to content
Mosses

Not able to read excel data from french system

Recommended Posts

Mosses

Hi,

I have a script which is running perfectly in Indian system, The same I am running in french system in which I am not able to read excel data.

Can anyone help me on this.

I have checked with keyboard language. changed to french to english and also changed excel language from french to english

 

Edited by Mosses

Share this post


Link to post
Share on other sites
JLogan3o13

@Mosses do you think, perhaps, that it would help us help you if you posted your script?

  • Like 1

√-1 2^3 ∑ π, and it was delicious!

Share this post


Link to post
Share on other sites
Mosses

Please find my complete script... Thank you in advance to help me.. 

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

$WINDOW_NAME="Test"

; Ask for  to be opened
AutoItSetOption ( "WinTitleMatchMode",2)
if not WinExists($WINDOW_NAME) then
    Msgbox (0,"",", de lancer , de se logguer, de lancer la fonction CICS1 et ENSUITE de relancer _DELETE.")
    exit
endif

; Open source EXCEL file
; $FileName=@ScriptDir & "\TSM ODT list to delete.xls"
$FileName=FileOpenDialog("Selectionner le fichier de suppression",@ScriptDir,"Suppr files (*.xlsx)",1)
if not FileExists($FileName) then
  Msgbox (0,"","Error, fichier manquant : "& $FileName)
  Exit
endif
$oExcelDoc = ObjGet($FileName)    ; Get an Excel Object from an existing filename
if not IsObj($oExcelDoc) then
    Msgbox (0,"","Could not open "& $FileName & " as an Excel Object.")
endif

Msgbox (0,"","Merci de cliquer sur l'entête de la fenêtre  ET DE NE PAS CLIQUER JUSQU'A LA FIN.")
if WinWaitActive($WINDOW_NAME) = 0 then
    Msgbox (0,"","Error : Impossible de trouver la fenêtre " & $WINDOW_NAME)
endif

; Iterate on each row
$OEvent=ObjEvent("AutoIt.Error","nothing")    ; Equal to VBscript's On Error Resume Next
dim $row
dim $column
$row=2

; Create application object
                $oExcel = _Excel_Open()
               If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookOpen Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

; *****************************************************************************
; Create a new workbook with only 1 worksheets
; *****************************************************************************
               $oWorkbook = _Excel_BookNew($oExcel,1)
               If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookNew ", "Error creating new workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
               MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookNew ", "Workbook has been created successfully with only 1 worksheets.")
               Wait()

              Global $k=3
              _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "a", "A2")
              _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "b", "B2")
              _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "c", "C2")
              _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "d", "D2")
              _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "e", "I2")
            _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "f", "J2")
do
     $a=$oExcelDoc.activesheet.cells($row,3).value


    if $a<>"" then
    Ensure()
     $b=$oExcelDoc.activesheet.cells($row,2).value
        $c=$oExcelDoc.activesheet.cells($row,1).value
        $d=$oExcelDoc.activesheet.cells($row,4).value
        $e=$oExcelDoc.activesheet.cells($row,9).value
        $f=$oExcelDoc.activesheet.cells($row,10).value

    ;Entering Screen Number and Aircraft code
      send("200")
      Wait()
      send($b)
      Wait()
      send("{enter}")
      Wait()

   ;Entering Screen Number, File Number , CSN And Item number.
    Ensure()
    Send("25u")
    Wait()
    send($d)
    Wait()
    send($a)
        if StringLen($b) = 8 Then
            send("{TAB}")
            Wait()
        elseif StringLen($b) = 9 Then
           Wait()
        endif
    send($c)
    Wait()
    send("{enter}")
    Wait()
     Wait()

    $f = StringLen($f)

    for $i=3 to $d

      ;Copy the Data
          Sleep(1000)
            send("{TAB}")
         if $row >= 3 Then

            for $j=1 to $f
               Send("{SHIFTDOWN}")
              send("{Right}")
           next

            Send("{SHIFTUP}")
            sleep(1000)
            Send("^c")
            Wait()
            Local $sData = ClipGet()

            Wait()


             Local $rowValueCF = "A"&$k
             Local $rowValueCA = "B"&$k
             Local $rowValueCSN = "C"&$k
             Local $rowValueItem = "D"&$k
             Local $rowValueCCS = "I"&$k
             Local $rowValueDT = "J"&$k

             Local $cfVAlue[$i] = [$a]
             Local $caVAlue[$i] = [$b]
             Local  $csnValue[$i] = [$c]
             Local  $itemValue[$i] = [$d]
             Local  $ccsValue[$i] = [$i]


            ;Paste the Copied Data to Excel
            $asResult = StringRegExp($sData,'([.]{1,40})', 1)
            If @error == 0 Then
               Else
               _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $cfVAlue, $rowValueCF)
               If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel Export ", "Error writing to worksheet." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

             _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $caVAlue, $rowValueCA)
               If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel Excel Export", "Error writing to worksheet." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

            _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $csnValue, $rowValueCSN)
               If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel Excel Export", "Error writing to worksheet." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

             _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $itemValue, $rowValueItem)
               If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel Excel Export", "Error writing to worksheet." & @CRLF & "@error = " & @error & ", @extended = " & @extended)


            _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $ccsValue, $rowValueCCS)
               If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel Excel Export", "Error writing to worksheet." & @CRLF & "@error = " & @error & ", @extended = " & @extended)


            _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sData, $rowValueDT)
               If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel Excel Export", "Error writing to worksheet." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

               Wait()
                  $k = $k + 1
                  EndIf
         EndIf
      next


    EndIf

 $row=$row+1

   ; Enter F2 to comeback
     if $row >= 4 Then
         send("{F2}")
         Sleep(1000)
       EndIf

   until $a=""


   ; Close file
$oExcelDoc.Close
Exit


; Check that  is opened
func Ensure()
    if WinWaitActive($WINDOW_NAME,"",1)=0 then
        MsgBox(0,"","Vous avez cliqué hors de  (fenêtre " & $WINDOW_NAME & ") => arret des suppressions")
        exit
    endif
endfunc


; Wait between two commands
func Wait()
    sleep(350)
endfunc

 

Edited by JLogan3o13

Share this post


Link to post
Share on other sites
Mosses

From the above script it works fine till this line "    _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "f", "J2") " after that script stops...

Share this post


Link to post
Share on other sites
Mosses

hello,

 

can not anyone help me on the above issue ASAP..

 

Thank you in Advance.

Share this post


Link to post
Share on other sites
JLogan3o13

@Mosses in the future please use the <> symbol on the toolbar to put your code into a code box (I have done so for you above). Doing so makes the code much easier to read.

Also, please do not bump your posts without waiting 24 hours (3 times in an hour is a little excessive). This may be the most important thing in the world to you, but you need to give forum users a chance to assist. We have volunteers from all over the globe; the person best equipped to assist you may not be online yet.


√-1 2^3 ∑ π, and it was delicious!

Share this post


Link to post
Share on other sites
Mosses

@JLogon Sure I will not bump posts without waiting for 24hours.

Thanks for your quick response.

 

 

 

Share this post


Link to post
Share on other sites
water

You are mixing all possible ways to work with Excel. I think it would be sensible to limit it to the Excel UDF. This includes error handling etc.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (2018-06-01 - Version 1.4.9.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2018-09-01 - Version 1.3.4.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

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

    • nooneclose
      By nooneclose
      Hey. I'm working on a new project and was wondering if there is a better way to "update" my Column E array. 
      Here is my code: 
      Local $nI  = 0                                                            ;Creates a name index of 0: nI = Name index Local $nII = 1                                                            ;Creates a name index of 1 for second loop: nII = Name Index 2 For    $iN = 0 To $IndexRows Step 1                                       ;Checks the roster for any names that appear twice      For $iN2 = 0 To $IndexRows Step 1          if $d_Names[$nI] == $d_Names[$nII] And $d_Names[$nII] <> "" Then              Local $timeSheetName = _ArraySearch($e_Names, $d_Names[$nI], 0, 0, 0, 0, 1)              ;MsgBox($MB_SYSTEMMODAL, "Found it", $d_Names[$nI] & " In column E on Row " & $timeSheetName)              Local $eI  = $timeSheetName + 1              ;ConsoleWrite($timeSheetName & @CRLF)              ;ConsoleWrite($eI & @CRLF)              ;ConsoleWrite(@CRLF)              _Excel_RangeInsert($OpenWorkbook.ActiveSheet, "E" & $eI & ":F" & $eI, $xlShiftDown)                                                                          ;Inserts a empty cell in columns E and F.              _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $d_Names[$nII], "E" & $eI)                                                                         ;Fills the empty cell in columns E with the doubled name              $aArray_Index = 2                                           ;Array element counter              For $Index = 2 To $IndexRows Step 1                        ;Loops through every row in the Excel file unto no rows are found or a null row is found                  $Array_Value_E = _Excel_RangeRead($OpenWorkbook, Default, "E"&$Index)                  $e_names[$aArray_Index] = $Array_Value_E                ;While the code loops every value in column E is stored in the E array (updating the array)                  $aArray_Index += 1              Next              ExitLoop          EndIf      Next      $nI  += 1      $nII += 1 Next Basically, It checks a roster for people whose name appears twice then inserts a new "row" for that person because they work in two different departments.
      I have to find that name however in Column E if two appear in column D. My code works but I think it is not as efficient as it could be. 
      Any ideas on how to improve the "update" for my array?
      (once it finds the double names in Column D it then searches for that name by going name by name in the Column E array and once it finds it inserts a new row. However, the E array doesn't have that new row stored in it so I have to "update" the array to properly find the next name)
      Any and all tips would be greatly appreciated. 
       
      NOTE: Just assume I'm opening the excel file properly please do not add that code in, it only complicates your answer. 
    • Miliardsto
      By Miliardsto
      Hello Im wondering if using this https://ohtejera.github.io/ImperiusAutoIt/#started
      UDF can i make that I can control my windows application with phone?
      like for example click button Start on android phone and then something would be done in my windows app?
    • nooneclose
      By nooneclose
      How do I properly convert this to Autoit? This is a VBA macro that I recorded in Excel.
       ActiveSheet.Outline.ShowLevels RowLevels:=2 I need this to close my subtotal once it is finished. 
      any help will be greatly appreciated. 
    • iMacg3
      By iMacg3
      Hi,
      I was looking into a way to delete a registry key (not a specific value, an entire key) if it is present. I was considering using RegRead and RegDelete. However, RegRead appears to only read values, not just keys. Is there a way to delete an entire registry key if it is present? I have heard that the below function may help.
       
      #include-once ; #UDF# ======================================================================================================================= ; Title .........: Reads\Search the name of a Key\Subkey\Value ; AutoIt Version : 3.3.8.1 ; Language ......: English ; Description ...: Lists all Keys\Subkeys\Values in a specified registry key ; Author(s) .....: DXRW4E ; Notes .........: ; =============================================================================================================================== ; #CURRENT# ===================================================================================================================== ;~ _RegEnumKeyEx ;~ _RegEnumValEx ; =============================================================================================================================== #Region ;**** Global constants and vars **** Global Const $sValueTypes[12] = ["REG_NONE","REG_SZ","REG_EXPAND_SZ","REG_BINARY","REG_DWORD","REG_DWORD_BIG_ENDIAN","REG_LINK","REG_MULTI_SZ","REG_RESOURCE_LIST","REG_FULL_RESOURCE_DESCRIPTOR","REG_RESOURCE_REQUIREMENTS_LIST","REG_QWORD"] #EndRegion ;**** Global constants and vars **** ; #FUNCTION# ======================================================================================================================== ; Name...........: _RegEnumKeyEx ; Description ...: Lists all subkeys in a specified registry key ; Syntax.........: _RegEnumKeyEx($KeyName[, $iFlag = 0[, $sFilter = "*"]]) ; Parameters ....: $KeyName - The registry key to read. ; $iFlag - Optional specifies Recursion (add the flags together for multiple operations): ; |$iFlag = 0 (Default) All Key-SubKeys Recursive Mod ; |$iFlag = 1 All SubKeys Not Recursive Mod ; |$iFlag = 2 Include in ArrayList in the first element $KeyName ; |$iFlag = 16 $sFilter do Case-Sensitive matching (By Default $sFilter do Case-Insensitive matching) ; |$iFlag = 32 Disable the return the count in the first element - effectively makes the array 0-based (must use UBound() to get the size in this case). ; By Default the first element ($array[0]) contains the number of strings returned, the remaining elements ($array[1], $array[2], etc.) ; |$iFlag = 64 $sFilter is REGEXP Mod, See Pattern Parameters in StringRegExp ; |$iFlag = 128 Enum value's name (_RegEnumKeyEx Return a 2D array, maximum Array Size limit is 3999744 Key\Value) ; |$iFlag = 256 Reads a value data, this flag will be ignored if the $iFlag = 128 is not set ; $sFilter - Optional the filter to use, default is *. (Multiple filter groups such as "All "*.XXx|*.YYY|*.ZZZ") ; Search the Autoit3 helpfile for the word "WildCards" For details. ; $vFilter - Optional the filter to use for ValueName, $vFilter will be ignored if the $iFlag = 128 is not set ; default is *. (Multiple filter groups such as "All "*.XXx|*.YYY|*.ZZZ") Search the Autoit3 helpfile for the word "WildCards" For details. ; $iValueTypes - Optional, set Value Types to search (Default $iValueTypes = 0 Read All), $iValueTypes will be ignored if the $iFlag = 128 is not set ; (add the flags together for multiple operations): ; 1 = REG_SZ ; 2 = REG_EXPAND_SZ ; 3 = REG_BINARY ; 4 = REG_DWORD ; 5 = REG_DWORD_BIG_ENDIAN ; 6 = REG_LINK ; 7 = REG_MULTI_SZ ; 8 = REG_RESOURCE_LIST ; 9 = REG_FULL_RESOURCE_DESCRIPTOR ; 10 = REG_RESOURCE_REQUIREMENTS_LIST ; 11 = REG_QWORD ; Return values .: Success - Return Array List (See Remarks) ; Failure - @Error ; |1 = Invalid $sFilter ; |2 = No Key-SubKey(s) Found ; |3 = Invalid $vFilter ; |4 = No Value-Name(s) Found ; Author ........: DXRW4E ; Modified.......: ; Remarks .......: The array returned is one-dimensional and is made up as follows: ; $array[0] = Number of Key-SubKeys returned ; $array[1] = 1st Key\SubKeys ; $array[2] = 2nd Key\SubKeys ; $array[3] = 3rd Key\SubKeys ; $array[n] = nth Key\SubKeys ; ; If is set the $iFlag = 128 The array returned is 2D array and is made up as follows: ; $array[0][0] = Number of Key-SubKeys returned ; $array[1][0] = 1st Key\SubKeys ; $array[1][1] = 1st Value name ; $array[1][2] = 1st Value Type (REG_NONE or REG_SZ or REG_EXPAND_SZ ect ect) ; $array[1][3] = 1st Value Data (If is set $iFlag = 256 Else Value Data = "") ; $array[2][0] = 2nd Key\SubKeys ; $array[2][1] = 2nd Value name ; $array[2][2] = 2nd Value Type (REG_NONE or REG_SZ or REG_EXPAND_SZ ect ect) ; $array[2][3] = 2nd Value Data (If is set $iFlag = 256 Else Value Data = "") ; $array[n][0] = nth Key\SubKeys ; Related .......: _RegEnumValEx() ; Link ..........: ; Example .......: _RegEnumKeyEx("HKEY_CURRENT_USER\Software\AutoIt v3") ; Note ..........: ; =================================================================================================================================== Func _RegEnumKeyEx($KeyName, $iFlag = 0, $sFilter = "*", $vFilter = "*", $iValueTypes = 0) If StringRegExp($sFilter, StringReplace("^\s*$|\v|\\|^\||\|\||\|$", Chr(BitAND($iFlag, 64) + 28) & "\|^\||\|\||\|$", "\\\\")) Then Return SetError(1, 0, "") Local $IndexSubKey[101] = [100], $SubKeyName, $BS = "\", $sKeyList, $I = 1, $sKeyFlag = BitAND($iFlag, 1), $sKeyFilter = StringReplace($sFilter, "*", "") If BitAND($iFlag, 2) Then $sKeyList = @LF & $KeyName If Not BitAND($iFlag, 64) Then $sFilter = StringRegExpReplace(BitAND($iFlag, 16) & "(?i)(", "16\(\?\i\)|\d+", "") & StringRegExpReplace(StringRegExpReplace(StringRegExpReplace(StringRegExpReplace($sFilter, "[^*?|]+", "\\Q$0\\E"), "\\E(?=\||$)", "$0\$"), "(?<=^|\|)\\Q", "^$0"), "\*+", ".*") & ")" While $I $IndexSubKey[$I] += 1 $SubKeyName = RegEnumKey($KeyName, $IndexSubKey[$I]) If @error Then $IndexSubKey[$I] = 0 $I -= 1 $KeyName = StringLeft($KeyName, StringInStr($KeyName, "\", 1, -1) - 1) ContinueLoop EndIf If $sKeyFilter Then If StringRegExp($SubKeyName, $sFilter) Then $sKeyList &= @LF & $KeyName & $BS & $SubKeyName Else $sKeyList &= @LF & $KeyName & $BS & $SubKeyName EndIf If $sKeyFlag Then ContinueLoop $I += 1 If $I > $IndexSubKey[0] Then $IndexSubKey[0] += 100 ReDim $IndexSubKey[$IndexSubKey[0] + 1] EndIf $KeyName &= $BS & $SubKeyName WEnd If Not $sKeyList Then Return SetError(2, 0, "") If BitAND($iFlag, 128) <> 128 Then Return StringSplit(StringTrimLeft($sKeyList, 1), @LF, StringReplace(BitAND($iFlag, 32), "32", 2)) $sKeyList = _RegEnumValEx(StringSplit(StringTrimLeft($sKeyList, 1), @LF), $iFlag, $vFilter, $iValueTypes) Return SetError(@Error, 0, $sKeyList) EndFunc ; #FUNCTION# ======================================================================================================================== ; Name...........: _RegEnumValEx ; Description ...: Lists all values in a specified registry key ; Syntax.........: _RegEnumValEx($KeyName[, $iFlag = 0[, $sFilter = "*"]]) ; Parameters ....: $KeyName - The registry key to read Or one-dimensional array RegKeyList ; use _RegEnumKeyEx() to get $RegKeyList (example $RegKeyList = [3, 1st Key\SubKeys, 2st Key\SubKeys, nth Key\SubKeys]) ; |$iFlag = 16 $sFilter do Case-Sensitive matching (By Default $sFilter do Case-Insensitive matching) ; |$iFlag = 32 Disable the return the count in the first element - effectively makes the array 0-based (must use UBound() to get the size in this case). ; By Default the first element ($array[0]) contains the number of strings returned, the remaining elements ($array[1], $array[2], etc.) ; |$iFlag = 64 $sFilter is REGEXP Mod, See Pattern Parameters in StringRegExp ; |$iFlag = 256 Reads a value data ; $sFilter - Optional the filter to use, default is *. (Multiple filter groups such as "All "*.XXx|*.YYY|*.ZZZ") ; Search the Autoit3 helpfile for the word "WildCards" For details. ; $iValueTypes - Optional, set Value Types to search (Default $iValueTypes = 0 Read All) ; (add the flags together for multiple operations): ; 1 = REG_SZ ; 2 = REG_EXPAND_SZ ; 3 = REG_BINARY ; 4 = REG_DWORD ; 5 = REG_DWORD_BIG_ENDIAN ; 6 = REG_LINK ; 7 = REG_MULTI_SZ ; 8 = REG_RESOURCE_LIST ; 9 = REG_FULL_RESOURCE_DESCRIPTOR ; 10 = REG_RESOURCE_REQUIREMENTS_LIST ; 11 = REG_QWORD ; Return values .: Success - Return Array List (See Remarks) ; Failure - @Error ; |3 = Invalid $sFilter ; |4 = No Value-Name(s) Found ; Author ........: DXRW4E ; Modified.......: ; Remarks .......: The array returned is 2D array and is made up as follows: ; $array[0][0] = Number of Key-SubKeys returned ; $array[1][0] = 1st Key\SubKeys ; $array[1][1] = 1st Value name ; $array[1][2] = 1st Value Type (REG_NONE or REG_SZ or REG_EXPAND_SZ ect ect) ; $array[1][3] = 1st Value Data (If is set $iFlag = 256 Else Value Data = "") ; $array[2][0] = 2nd Key\SubKeys ; $array[2][1] = 2nd Value name ; $array[2][2] = 2nd Value Type (REG_NONE or REG_SZ or REG_EXPAND_SZ ect ect) ; $array[2][3] = 2nd Value Data (If is set $iFlag = 256 Else Value Data = "") ; $array[n][0] = nth Key\SubKeys ; Related .......: _RegEnumKeyEx() ; Link ..........: ; Example .......: _RegEnumValEx("HKEY_CURRENT_USER\Software\AutoIt v3") ; Note ..........: ; =================================================================================================================================== Func _RegEnumValEx($aKeyList, $iFlag = 0, $sFilter = "*", $iValueTypes = 0) If StringRegExp($sFilter, "\v") Then Return SetError(3, 0, "") If Not IsArray($aKeyList) Then $aKeyList = StringSplit($aKeyList, @LF) Local $aKeyValList[1954][4], $iKeyVal = Int(BitAND($iFlag, 32) = 0), $sKeyVal = 1953, $sRegEnumVal, $iRegEnumVal, $RegRead = BitAND($iFlag, 256), $vFilter = StringReplace($sFilter, "*", "") If Not BitAND($iFlag, 64) Then $sFilter = StringRegExpReplace(BitAND($iFlag, 16) & "(?i)(", "16\(\?\i\)|\d+", "") & StringRegExpReplace(StringRegExpReplace(StringRegExpReplace(StringRegExpReplace($sFilter, "[^*?|]+", "\\Q$0\\E"), "\\E(?=\||$)", "$0\$"), "(?<=^|\|)\\Q", "^$0"), "\*+", ".*") & ")" For $i = 1 To $aKeyList[0] $iRegEnumVal = 0 While 1 If $iKeyVal = $sKeyVal Then If $sKeyVal = 3999744 Then ExitLoop $sKeyVal *= 2 ReDim $aKeyValList[$sKeyVal + 1][4] EndIf $aKeyValList[$iKeyVal][0] = $aKeyList[$i] $iRegEnumVal += 1 $sRegEnumVal = RegEnumVal($aKeyList[$i], $iRegEnumVal) If @Error <> 0 Then If $iRegEnumVal = 1 And $vFilter = "" Then $iKeyVal += 1 ExitLoop EndIf $aKeyValList[$iKeyVal][2] = $sValueTypes[@Extended] If BitAND(@Extended, $iValueTypes) <> $iValueTypes Then ContinueLoop If $vFilter And Not StringRegExp($sRegEnumVal, $sFilter) Then ContinueLoop $aKeyValList[$iKeyVal][1] = $sRegEnumVal If $RegRead Then $aKeyValList[$iKeyVal][3] = RegRead($aKeyList[$i], $sRegEnumVal) $iKeyVal += 1 WEnd Next $sRegEnumVal = $iKeyVal - Int(BitAND($iFlag, 32) = 0) If Not $sRegEnumVal Or ($sRegEnumVal = 1 And $vFilter = "" And $aKeyValList[$iKeyVal - $sRegEnumVal][2] = "") Then Return SetError(4, 0, "") ReDim $aKeyValList[$iKeyVal][4] If Not BitAND($iFlag, 32) Then $aKeyValList[0][0] = $iKeyVal - 1 Return $aKeyValList EndFunc Thanks.
       
    • great77
      By great77
      ; put the root in a variable $sRoot = "C:\Project\PHexample\" Global $sCurrentTime = _NowCalc() ; We can use that variable here Global $aList = _FileListToArray($sRoot, Default, 2) If @error Then Exit ;;;;;;MsgBox(0, "Error", "_FileListToArray returned @error = " & @error) ;;;;;;;;;;;This is a loop that runs from 1 to the number of items listed in the first element of the returned  array For $i = 1 To UBound($aList) - 1     MsgBox(0, "Folder date", $sRoot & "" & $aList[$i] & @CRLF & @CRLF & FileGetTime($sRoot & "" & $aList[$i], 1, 1))     MsgBox(0, "Folder date", FileGetTime($sRoot & "" & $aList[$i], 1, 1))      $a_filenew = StringReplace(StringReplace(StringReplace(_NowCalc(), "/", ""), ":", ""), " ", "")       MsgBox(0, "Folder date", $a_filenew) $adex =  _DateDiff('D', FileGetTime($sRoot & "" & $aList[$i], 1, 1), $a_filenew)  MsgBox(0,"ade", $adex) Next I have a code as seen above, but the difference in time is returning zero. I understand that the date yyyymmddhhmmss but how can I find the difference.
      The purpose is to try find the difference in days. Any suggestion?  
×