Autor Thema: Windows Temp-Verzeichnis in String setzen  (Gelesen 4349 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Windows Temp-Verzeichnis in String setzen
« am: 13.03.04 - 20:34:13 »
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

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
« Letzte Änderung: 13.03.04 - 20:51:49 von TMC »
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Windows Temp-Verzeichnis in String setzen
« Antwort #1 am: 13.03.04 - 21:26:52 »
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)
« Letzte Änderung: 13.03.04 - 21:27:30 von Semeaphoros »
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz