Auslöser war folgender Thread:
http://www.atnotes.de/index.php?board=7;action=display;threadid=14595Gerade für Attachment-Aktionen braucht man ja immer ein temporäres Verzeichnis. Viele Entwickler bedienen sich da c:\Temp etc., was meines Erachtens nicht sauber ist aus 3 Gründen:
a) Das Verzeichnis ist evtl. gar nicht vorhanden
b) Der User hat keine Schreibrechte
c) Das Windows-Temp-Verzeichnis ist nicht c:\Temp und wird so bei Rechner-Aufräumarbeiten nicht geleert
Daher sollte man meines Erachtens immer das bei Windows definierte Temp-Verzeichnis verwenden.
Notes schafft mit der Environ-Function die Möglichkeit, dieses Verzeichnis auszulesen. Auf manchen Systemen klappt dies aber u.U. nicht, daher habe ich im folgenden Code berücksichtigt, dass im Worst Case ein Temp-Verzeichnis im Notes-Datenverzeichnis angelegt wird (wo der User auch immer Schreibrechte hat / haben sollte).
Sub Click(Source As Button)
Dim session As New NotesSession
Dim szNotesDataPath As String
Dim szExistsPath As String
Dim szTempPath As String
'Temp-Variable setzen
szTempPath=Environ$("Temp")
'Tmp-Variable setzen, weil Temp nicht vorhanden
If szTempPath="" Then
szTempPath=Environ$("Tmp")
End If
'Worst Case: Sowohl Temp als auch Tmp ist nicht verfügbar, daher
'nehmen wir das Datenverzeichnis von Notes: Wenn da kein 'Temp'-Verzeichnis vorhanden, dann legen wir es an
If szTempPath="" Then
szNotesDataPath = session.GetEnvironmentString("Directory",True)
szExistsPath = szNotesDataPath & "\Temp"
If Dir$(szExistsPath,16) = "" Then
Mkdir szNotesDataPath & "\Temp"
szTempPath = szNotesDataPath & "\Temp"
Else
szTempPath = szNotesDataPath & "\Temp"
End If
End If
Msgbox szTempPath
End Sub
Eine andere Vorgehensweise mancher Entwickler ist es, die Registry auszulesen, was aber m.E. bei unterschiedlichen Betreibssystemen zu Problemen führen kann.
Ich bin über Anregungen und Verbesserungsvorschläge dankbar :-)
Matthias