Sign in to follow this  
Followers 0
Athos

_FileListToArray list by date

12 posts in this topic

#1 ·  Posted (edited)

Hi guys, I've just written a script that takes a bunch of excel files in a folder, reads all of them, puts all their data into a 2d array, and then writes their data to an excel document.

However there is one problem with this and that is that when I write all the files to the array in the first place,

it does it in a seemingly random order. Because of this, the excel that I end up with is all out of order, and if it just put the files into the array in order of date, it would be much easier to read.

Edited by Athos

Share this post


Link to post
Share on other sites



Athos,

Add another column to your array and use FileGetTime to get the file date for each file as you create the list. Then you can use _ArraySort to get the files into order before looping through the array and adding the files to the Excel sheet. :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

Melba, I'm not sure what you mean when you say adding another column to the array.

I'm using FileListTOArray to generate my array curently.

Local $FileList = _FileListToArray("Path")
So that gets me an array of Files.

Now I can loop through them and get a string which contains the the time(i suppose in string form).

So now I make a new 2d array, that has both a file and the corresponding time associated with it.

Is this right so far?

Thing is though, when I call array sort, how will it know to sort the files by the second column?

Edited by Athos

Share this post


Link to post
Share on other sites

Athos,

Is this right so far?

Absolutely. :thumbsup:

when I call array sort, how will it know to sort the files by the second column?

Have looked at the function in the Help file? :huh:

I think not or you would have seen the $iSubItem parameter which lets you set the "Sub-index to sort on in 2D arrays". ;)

Give it a try and see how you get on. :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

Guys could I have some clarifcation on what redim is doing. From reading the helpfile, it's supposed to allow you to restructure the size of your

array without destroying the values inside of it.

The problem is that it seemingly destroys the value in "column 0" When I go from a 1d to a 2d array.

Local $FileList = _FileListToArray("path")



;makes sure thet master array is filled up



If @error = 1 Then

MsgBox(0, "", "No Folders Found.")

Exit

EndIf

If @error = 4 Then

MsgBox(0, "", "No Files Found.")

Exit

EndIf







_ArrayDisplay($FileList, "All that data ")

ReDim $FileList[ubound($filelist)][2]



_ArrayDisplay($FileList, "All dat changed data")

On the first _arrayDisplay, it lets me see my array fine

However after rediming it, it erases all the data from the array. Isn't that what it's not supposed to do, or am I misunderstanding something here?

Also thanks so much for the help so far.

Edited by Athos

Share this post


Link to post
Share on other sites

You can't change the dimensions of an array that way, you'll need to create a new 2D array and copy your data from the array returned from the _FileListToArray function. I would suggest the Array wiki tutorial if you're unfamiliar with how to work with arrays.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

Athos,

ReDim only works if you keep the same number of dimensions - as it says in the Help file. ;)

In this case, where _FileListToArray produces a 1D array and you need to move the names to a 2D array, you have to create a new array of the correct size and then loop through the 1D array copying the values. You can of course use the same loop to run FileGetTime on the file and fill both columns at the same time. :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

#include <Array.au3>

#include <File.au3>



$sPath = @SystemDir



$aFiles = _FileListToArray($sPath, "*.*", 1)

_ArrayDisplay($aFiles, '<img src='http://www.autoitscript.com/forum/public/style_emoticons/<#EMO_DIR#>/wink.png' class='bbc_emoticon' alt=';)' />')



Global $aFileList2D[$aFiles[0] + 1][2] = [[$aFiles[0]]]

For $i = 1 To $aFiles[0]

    $aFileList2D[$i][0] = $aFiles[$i]

    $aFileList2D[$i][1] = FileGetTime($sPath & '' & $aFiles[$i], 0, 1)

Next

_ArrayDisplay($aFileList2D, '<img src='http://www.autoitscript.com/forum/public/style_emoticons/<#EMO_DIR#>/wink.png' class='bbc_emoticon' alt=';)' />')

_ArraySort($aFileList2D, 0, 1, 0, 1)

_ArrayDisplay($aFileList2D, '<img src='http://www.autoitscript.com/forum/public/style_emoticons/<#EMO_DIR#>/wink.png' class='bbc_emoticon' alt=';)' />')

Share this post


Link to post
Share on other sites

AZJIO,

I take it that the whole "give a man a fish...give a man a net" idea passes you by? ;)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

#12 ·  Posted (edited)

It's ok Melba, I got everything working before I saw he posted that :)

Thanks everybody for your help. It took some fiddling with the the arrays, and in fact I think there is a bit more optamization left to be done with my code, but you guys really got my off in the right direction.

Edited by Athos

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
Sign in to follow this  
Followers 0