Domino 9 und frühere Versionen > ND7: Entwicklung

Dateinamen für temporäre Datei erzeugen

(1/1)

gstueb:
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"
--- Ende Code ---

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

koehlerbv:
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

TRO:
ü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

diam:
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

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln