PC-Dateien unter Kontrolle
ASNA stellt Steuerelemente für das Lesen und Schreiben einer PC-Datei (OS-File) zur Verfügung, aber Funktionen wie Löschen, Umbenennen oder sogar Verzeichnisse auslesen sind ebenso wichtig für die Verarbeitung von Schnittstellen.
In diesem Beispiel werden die Dateien eines ausgewählten Verzeichnisses in eine Subfile geschrieben. Über Auswahl der Datei und die Schaltfläche "Löschen" kann die gewählte Datei gelöscht werden (Vorsicht: "Weg ist Weg", Sie finden diese Datei nicht im Papierkorb!!!).
Die meisten Funktionen für die Bearbeitung von PC-Dateien finden Sie im FileSystemObject. Dieses object is bestandteil der Microsoft Scripting Runtime (Über Menüpunkt Projects --> References integrierbar). Außerdem brauchen wir für die Verarbeitung von Verzeichnisinhalte (Arrays aber dann nach Microsoft) die "Enumerator Type Library" (ebenfalls integrieren).
Im Objectbrowser (Strg + F2) finden Sie was die Scripting Runtime noch alles bietet...

- Microsoft Windows
- ASNA Visual RPG Classic
DclFld FSys$$ Type(Scripting.FileSystemObject)
DclFld SDir$$ Type(*String)
//----------------------------------
// LoadSubfile
//----------------------------------
-
DclFld en Type(EnumeratorLib.Iterator)
DclFld Fldr$$ Type(Scripting.Folder)
DclFld Strm$$ Type(Scripting.File)
Subfile.ClearObj()
Fldr$$ = FSys$$.GetFolder(SDir$$)
If (Fldr$$.files.Count > 0 )
-
en.Init( Fldr$$.Files )
DoWhile ( Not en.AtEnd )
-
Strm$$ = en.Item
S$File = Strm$$.Path
RecNum = Subfile.RowCount + 1
Write Subfile
en.MoveNext()
If Subfile.RowCount > 0
- CmdDelete.Enabled = *True
- CmdDelete.Enabled = *False
//----------------------------------
// Select a folder
//----------------------------------
BEGSR CmdSelect Click
-
If CD1.ShowFolder() = 0
-
SDir$$ = CD1.Folder
F$SDir = SDir$$
LoadSubfile()
//----------------------------------
// Löschen
//----------------------------------
BEGSR CmdDelete Click
-
DclFld File$$ Type(*String)
RecNum = Subfile.Row + 1
Chain Subfile Key(RecNum)
If %Found
-
File$$ = %Trim(S$File)
FSys$$.DeleteFile(File$$)
LoadSubfile()