Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: gstueb am 01.03.10 - 16:52:25

Titel: Dateinamen für temporäre Datei erzeugen
Beitrag von: gstueb 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
Titel: Re: Dateinamen für temporäre Datei erzeugen
Beitrag von: koehlerbv 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
Titel: Re: Dateinamen für temporäre Datei erzeugen
Beitrag von: TRO 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
Titel: Re: Dateinamen für temporäre Datei erzeugen
Beitrag von: diam 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