Best Practices > Diskussionen zu Best Practices
Filesystem Klasse unter LS
Johnson:
Das Handling mit Dateien oder ganzen Ordnerstrukturen in Lotus Script ist ja zuweilen recht schwierig und kompleziert.
Desshalb habe ich eine extra Klasse geschrieben die mir eine Funktionen dazu zur Verfügung stellen soll.
Als Basis dazu dient das FileSystemObject-Objekt des Windowsstandards. Und da ist auch schon das Problem. Bisher bin ich mit der Windowsschmittstelle recht gut zurechgekommen. Es gibt jedoch viele viele Szenarien in denen unter Linux mit Dateien gearbeitet wird. Da in Sachen Linux u.ä. meine Kenntnisse sehr begrenzt sind, bitte ich hier um etwas Hilfe und Hintergrundinfos.
Gruß und Danke im Voraus
Johnson
TMC:
Kurze Erklärung, da der Thread nun 2mal verschoben wurde:
Johnson hatte hier bei Best Practices Diskussionen gepostet, Axel dann das ganze (eigentlich korrekt) in Tipps & Tricks verschoben.
koehlerbv hatte allerdings hier vorgeschlagen, daraus einen Best Practices - Artikel zu machen, daher hab ich den Thread nun wieder hierher verschoben. ;)
Johnson:
Zur Dokumentation:
Grundsätzlich sollen folgende Funktionen möglich sein:
Laufwerke (nur Windows) identifizieren
Verzeichnisse erstellen, durchsuchen, kopieren, verschieben, löschen
Dateien erstellen, lesen/schreiben, kopieren, verschieben, löschen
Die Zugriffsberechtigungen sollen hier nicht abgebildet werden, da diese sich von OS zu OS unterscheiden.
Übersicht zur Version 1.0
1. Basics
Properties
FileSystemObject FileSystemObject-Objekt
2. Laufwerke (Win)
Properties
DriveExitsts(strDrive) Prüft ob das abgegebene Laufwerk existiert
DriveLetters Allen Laufwerksbuchstaben in einem Array
Drives Drives-Objekt (Listenobjekt mit Drive-Objekten)
Functions
GetDrive(strDrive) Laufwerk als Drive-Objekt
GetDriveName(strPath) Laufwerknamen eines Verzeichnisses
Methods
CreateVirtualDrive(strVirtDrive, strPath)
Erstellt für das angegebene Verzeichnis ein virtuelles Laufwerk (temporär)
RemoveVirtualDrive(strVirtDrive) Löscht ein virtuelles Laufwerk
3. Verzeichnisse
Properties
FolderExists(strPath) Prüft ob das angegebene Verzeichnis existiert
NotesFolder Notes\Data-Verzeichnis als Folder-Objekt
SystemFolder Konfigurationsverzeichnis von Windows als Folder-Objekt
TemporaryFolder Temporäres Verzeichnis von Windows/des aktuellen Benutzers als Folder-Objekt
WindowsFolder Windowsverzeichnis als Folder-Objekt
Functions
DirFiles(strPath) Alle Dateinamen eines Verzeichnisses in einem Array
DirFolder(strPath) Alle Ordner eines Verzeichnissen in einem Array
GetFolder(strPath) Verzeichnis als Folder-Objekt
GetParentFolderName(strPath) Name übergeordnete Verzeichnisses.
Methods
CopyFolder(strSourcePath, strTargetPath) Kopiert einen Ordner.
CreateFolder(strPath) Erstellt einen Ordner
DeleteFolder(strPath) Löscht einen Ordner
SearchFile(strPath, SearchFileResult, strText) Durchsucht einen Ordner (rekursiv)
4. Dateien
Properties
FileExists(strFilePath) Prüft ob eine Datei existiert
Functions
GetFile(strFilePath) File-Objekt
GetFileCreated(strFilePath) Erstelldatum einer Datei
GetFileLastModified(strFilePath) Datum, an dem eine Datei gespeichert wurde
Methods
CopyFile(strSourceFilePath, strTargetFilePath, blnOverwrite Kopiert eine Datei
DeleteFile Löscht eine Datei
MoveFile(strSourceFilePath, strTargetFilePath) Verschiebt eine Datei
Zusätzliche Features in Version 2.0
... sind gerade in Arbeit und steht dann voraussichtlich im Januar 2006 hier zur Verfügung.
* Alle Funktionen (außer Laufwerkeigenschaften) Plattformunabhängig
* Diverse zusätzliche Eigenschaften zum Filesystem wie z.B. Verzeichnistrenner ("/" oder "\")
Falls irgendetwas nicht berücksichtigt wurde bzw. konzeptionelle Untstimmigkeiten auftreten (Hui! Was für´n Satz), dann bitte hier posten!
Axel:
Ich hab' das noch ein paar Vorschläge.
1. Umbenennen einer Datei.
2. Umbenennen eines Ordners
3. Auswahldialog für einen Ordner (API-Funktion BrowseForFolder, gibt's wahrscheinlich nur für Windows, ob das "Pinguin-OS" das auch kann weiß ich nicht ).
--- Zitat von: TMC am 08.12.05 - 23:05:43 ---koehlerbv hatte allerdings hier vorgeschlagen, daraus einen Best Practices - Artikel zu machen, daher hab ich den Thread nun wieder hierher verschoben. ;)
--- Ende Zitat ---
Einverstanden. Das Posting kannte ich nicht.
Axel
Johnson:
zu Punkt 1 und 2:
Richtig. Das fehlt noch.
zu Punkt 3:
Reichen die Funktionen SaveFileDialog und OpenFileDialog des NotesUIWorkspace-Objekts nicht aus?
Hintergrund: Diese Library sollte lediglich das Handling ermöglichen, Frontend-Funktionen habe ich in einer Frontend-Klasse (von Filesystem vererbt) definiert.
Aber hier zwei Beispiele (Ordner und Datei auswählen) wie es in der Klasse aussehen könnte:
--- Code: ---' ChoiceFolder
Public Function ChoiceFolder(str_title) As Variant
Dim folder As Variant
Dim var_filepath As Variant
Dim uiws as NotesUIWorkspace
Set uiws = New NotesUIWorkspace
var_filepath = uiws.SaveFileDialog(True, str_title, "", "")
If Isempty(var_filepath) Then Exit Function
If Me.FolderExists(var_filepath(0)) Then
Set folder = Me.GetFolder(var_filepath(0))
Else
If Messagebox("Das angegebene Verzeichnis existiert nicht!" & Chr(13) & _
"Möchten Sie es jetzt erstellen?", MB_YESNO + MB_ICONQUESTION, str_title) = 6 Then
Call Me.CreateFolder(var_filepath(0))
Set folder = Me.GetFolder(var_filepath(0))
End If
End If
If Not (Isempty(folder)) Then ChoiceFolder = folder.Path
Set folder = Nothing
End Function
--- Ende Code ---
--- Code: ---' DlgFile
' Shows a dialog to choice a file and returns the file path.
Public Function DlgFile(str_title as String, str_filter As String, str_initdir As String) As String
Dim uiws as NotesUIWorkspace
Set uiws = New NotesUIWorkspace
Dim var_result As Variant
var_result = uiws.OpenFileDialog(False, str_title, str_filter, str_initdir)
If Isempty(var_result) Then Exit Function
DlgFile = var_result(0)
End Function
--- Ende Code ---
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln