Autor Thema: Dateinamen für temporäre Datei erzeugen  (Gelesen 2058 mal)

Offline gstueb

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
  • God is real unless declared integer
Dateinamen für temporäre Datei erzeugen
« am: 01.03.10 - 16:52:25 »
Hallo,

ich muss von einem Client aus eine temporäre Datei erzeugen. Derzeit speichere ich diese Datei einfach im TEMP-Verzeichnis unter einem fixen Dateinamen:

Code
strTempFDF = Environ("TEMP")+"\\"+"formular.fdf"

Ich möchte nun aber sicherstellen, dass der Dateiname eindeutig ist und nicht bereits existiert. Gibt es in Notes evtl. eine Funktion, um einen eindeutigen Dateinamen zu ermitteln? Falls nein, würde ich mir gerne selbst eine solche Funktion schreiben.

Wie würdet ihr einen eindeutigen Dateinamen ermitteln? Name der DB + Zeitstamp? Oder einfach TEMPxxxxxxx und xxxxxxx per Zufallsgenerator so oft verändern, bis der Dateiname nicht vorkommt?

Danke & Gruß,
Gregor

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Dateinamen für temporäre Datei erzeugen
« Antwort #1 am: 01.03.10 - 17:07:43 »
Was Du auf jeden Fall machen solltest: Mit Dir$ das Verzeichnis auf den aktuell gewählten Dateinamen prüfen.

Wege, um einen (möglichst) eindeutigen Dateinamen zu erzeugen, gibt es viele:
- Userkürzel auf NotesSession.UserName + YYYYMMDDHHMMSS
- temp. Dokument erzeugen und dessen UNID verwenden
- Evaluate über @Unique
- fortlaufender Zähler, der permanent geführt wird

Das liesse sich hier noch sehr viel weiter fortführen, aber Du brauchst ja eh nur eine Variante.

HTH,
Bernhard

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: Dateinamen für temporäre Datei erzeugen
« Antwort #2 am: 02.03.10 - 10:20:54 »
über den (Windows-) API-Aufruf

Declare Function W32_GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (Byval lpszPath As String,_
Byval lpPrefixString As String, Byval wUnique As Long, Byval lpTempFileName As String) As Long

geht es auch.

Braucht man dann noch den Temp-Pfad, dann hilft das hier weiter:

Declare Function W32_GetTempPath Lib "kernel32" Alias "GetTempPathA" (Byval nBufferLength As Long, Byval lpBuffer As String) As Long


hth

Thomas

Offline diam

  • Frischling
  • *
  • Beiträge: 6
Re: Dateinamen für temporäre Datei erzeugen
« Antwort #3 am: 02.03.10 - 10:44:10 »
Hallo!

Ich nutze seit Jahren Scripting.FileSystemObject:

Function FileSystemTempFileCreate() As String
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")
   
   Dim sf
   Set sf = fso.GetSpecialFolder(2)
   
   FileSystemTempFileCreate=sf.path+"\"+fso.GetTempName()
End Function

siehe auch: http://msdn.microsoft.com/en-us/library/6kxy1a51%28VS.85%29.aspx

Dirk

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz