Einsteiger-Kapitel - Speichern von Daten im Speicher

Dieses Beispiel sammelt Informationen über die Dateien im angemeldeten Benutzer-Verzeichnis (User Home Directory) in einer strukturierten verketteten Liste. Für den Moment ist die Ausgabe nicht sehr aufregend, aber wir kommen später auf dieses Beispiel zurück und machen es auf mehreren verschiedenen Wegen ein wenig freundlicher.
  ; Dieser Abschnitt beschreibt die Felder einer Struktur oder eines Datensatzes, in diesem
  ; Fall meist Integer, aber beachten Sie den String für den Dateinamen und den Quad-Wert
  ; für die Dateigröße.
  Structure FILEITEM
    Name.s
    Attributes.i
    Size.q
    DateCreated.i
    DateAccessed.i
    DateModified.i
  EndStructure
  
  ; Jetzt definieren wir eine neue Liste an Dateien unter Verwendung der zuvor spezifizierten
  ; Struktur, und einige andere Variablen welche wir später verwenden werden.
  NewList Files.FILEITEM()
  Define.s Folder
  Define.l Result
  
  ; Diese Funktion ermittelt das Benutzer-Verzeichnis des angemeldeten Anwenders.
  Folder = GetHomeDirectory()
  
  ; Öffnen des Verzeichnisses zum Auflisten all seiner Inhalte.
  Result = ExamineDirectory(0, Folder, "*.*")  
  
  ; Ist dies ok, beginnen wir das Auflisten der Einträge.
  If Result
    ; Durchlauf bis NextDirectoryEntry(0) Null zurückgibt - was anzeigt, dass es keine weiteren Einträge gibt.
    While NextDirectoryEntry(0)
      ; Wenn der Verzeichnis-Eintrag eine Datei und kein Ordner ist.
      If DirectoryEntryType(0) = #PB_DirectoryEntry_File
        ; Fügt ein neues Element zur verketteten Liste hinzu.
        AddElement(Files())
        ; Und füllt sie mit den Eigenschaften der Datei.
        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
    ; Schließt das Verzeichnis.
    FinishDirectory(0)
  EndIf
  
  ; Zeigt die Ergebnisse im Debug-Ausgabefenster (wenn es keinen Eintrag gibt, wird nichts angezeigt)
  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, zuerst sind die Datumsangaben in der Ausgabe nur Zahlen - dies ist nicht sehr nützlich, daher lasst sie uns ein bisschen vertrauter aussehen. Ersetzen Sie die letzten drei Debug-Befehle mit diesen:
      ...
      Debug "Created = " + FormatDate("%dd/%mm/%yyyy", Files()\DateCreated)
      Debug "Accessed = " + FormatDate("%dd/%mm/%yyyy", Files()\DateAccessed)
      Debug "Modified = " + FormatDate("%dd/%mm/%yyyy", Files()\DateModified)
Die FormatDate() Funktion nimmt ein Datum in PureBasic's eigenem numerischen Datumsformat und zeigt es in einem Format an, mit dem wir etwas anfangen können. So, jetzt beginnen die Dinge etwas vernünftiger auszusehen.

Im Moment liegt die Liste nicht in einer bestimmten Reihenfolge vor, daher lasst uns die Liste sortieren, bevor wir sie anzeigen. Fügen Sie diese Zeile vor dem Kommentar über das Anzeigen der Liste und der ForEach Schleife hinzu.
  ...
  
  ; Sortiert die Liste in alphabetisch aufsteigender Reihenfolge der Dateinamen.
  SortStructuredList(Files(), #PB_Sort_Ascending, OffsetOf(FILEITEM\Name), #PB_String)
  
  ; Wenn es einige Einträge in der Liste gibt, zeigen wir die Ergebnisse im Debug-Ausgabefenster.
  ...
Dieser Befehl nimmt die strukturierte Liste, und sortiert sie in aufsteigender Reihenfolge (#PB_Sort_Ascending), abhängig vom Feld 'Name' der Struktur (OffsetOf(FILEITEM\Name)), welches ein String-Wert ist (#PB_String).

Einsteiger-Kapitel Navigation

< Vorheriges: String-Manipulation | Überblick | Nächstes: Eingabe & Ausgabe >