Best Practices > Diskussionen zu Best Practices

Filesystem Klasse unter LS

(1/3) > >>

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