Lotus Notes / Domino Sonstiges > Tipps und Tricks
Windows Temp-Verzeichnis in String setzen
(1/1)
TMC:
Auslöser war folgender Thread: http://www.atnotes.de/index.php?board=7;action=display;threadid=14595
Gerade 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).
--- Code: ---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
--- Ende Code ---
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
Semeaphoros:
Windows selber nimmt als Fallback das Verzeichnis "Temp" im Windows-Verzeichnis (welches standardmässig entweder "Windows" oder "Winnt" heisst. Lässt sich im Normalfall über die Environment Variable SystemRoot oder fast zuverlässiger über Windir auslesen)
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln