UserGuide - Storing data in memory
This example gathers information about the files in the logged on user's home directory into a structured list. For now the output isn't very exciting but we will come back to this example later on and make it a bit more friendly in several different ways.; This section describes the fields of a structure or record, mostly integers in this case, ; but notice the string for the file name and the quad for the file size. Structure FILEITEM Name.s Attributes.i Size.q DateCreated.i DateAccessed.i DateModified.i EndStructure ; Now we define a new list of files using the structure previously specified ; and some other working variables we'll use later on. NewList Files.FILEITEM() Define.s Folder Define.l Result ; This function gets the home directory for the logged on user. Folder = GetHomeDirectory() ; Open the directory to enumerate all its contents. Result = ExamineDirectory(0, Folder, "*.*") ; If this is ok, begin enumeration of entries. If Result ; Loop through until NextDirectoryEntry(0) becomes zero - indicating that there are no more entries. While NextDirectoryEntry(0) ; If the directory entry is a file, not a folder. If DirectoryEntryType(0) = #PB_DirectoryEntry_File ; Add a new element to the list. AddElement(Files()) ; And populate it with the properties of the file. Files()\Name = DirectoryEntryName(0) Files()\Size = DirectoryEntrySize(0) Files()\Attributes = DirectoryEntryAttributes(0) Files()\DateCreated = DirectoryEntryDate(0, #PB_Date_Created) Files()\DateAccessed = DirectoryEntryDate(0, #PB_Date_Accessed) Files()\DateModified = DirectoryEntryDate(0, #PB_Date_Modified) EndIf Wend ; Close the directory. FinishDirectory(0) EndIf ; Shows the results in the debug window (if there is no entry, nothing will be displayed) ForEach Files() Debug "Filename = " + Files()\Name Debug "Size = " + Str(Files()\Size) Debug "Attributes = " + StrU(Files()\Attributes) Debug "Created = " + StrU(Files()\DateCreated) Debug "Accessed = " + StrU(Files()\DateAccessed) Debug "Modified = " + StrU(Files()\DateModified) Next Files()Ok, firstly, the dates in the output are just numbers - this isn't very helpful, so let's make them look a bit more familiar. Replace the last three Debug statements with these:
... Debug "Created = " + FormatDate("%dd/%mm/%yyyy", Files()\DateCreated) Debug "Accessed = " + FormatDate("%dd/%mm/%yyyy", Files()\DateAccessed) Debug "Modified = " + FormatDate("%dd/%mm/%yyyy", Files()\DateModified)The FormatDate() function takes a date in PureBasic's own numeric date format and displays it in a format that we can specify. So now things should begin to look a bit more sensible.
... ; Sort the list into ascending alphabetical order of file name. SortStructuredList(Files(), #PB_Sort_Ascending, OffsetOf(FILEITEM\Name), #PB_String) ; If there are some entries in the list, show the results in the debug window. ...This command takes the structured list, and resorts it into ascending order (#PB_Sort_Ascending), of the Name field of the structure (OffsetOf(FILEITEM\Name)), which is a string value (#PB_String).
UserGuide Navigation
< Previous: String Manipulation | Overview | Next: Input & Output >