|
Tipp 0500
|
Temporäre Dateinamen anfordern
|
|
|
Autor/Einsender: Datum: |
|
Detlev Schubert 22.06.2006 |
|
Entwicklungsumgebung: |
|
VB 6 |
|
|
Sollen in einer Anwendungen Daten, Dokumente oder bestimmte Zustände nur vorübergehend gespeichert werden, empfiehlt sich die Verwendung von
temporären Dateien. Natürlich kann man dies auf verschiedene Arten erledigen, wer dies aber professionell machen möchte, greift in die
API-Trickkiste, denn genau zu diesem Zweck stellt das Betriebssystem mit dem TEMP-Ordner ein spezielles Verzeichnis und die entsprechenden
API-Funktionen zur Verfügung.
|
Zum Anlegen einer temporären Datei ist natürlich auch ein eindeutiger Dateinamen notwendig, da auch andere Anwendungen im TEMP-Ordner
ihre Dateien ablegen, und es so zu Namenskonflikten kommen könnte.
|
Mit der API-Funktion GetTempPath wird zuerst ermittelt, wo sich der Temporär-Ordner befindet. Anschließend lassen wir uns mit
GetTempFileName einen temporären Dateinamen zurückgeben. Der Dateiname besteht aus einem maximal dreistelligen Präfix, der
mit dem Parameter SFilePrefix vorgegeben werden kann (wie im Beispiel $VB), einem zufällig gebildeten vierstelligen Hexadezimalwert
(z.B. 1AC8), sowie der Endung .tmp.
|
Das Beispiel zeigt, wie ein temporärer Dateinamen angefordert und spätestens beim Beenden der Anwendung ordnungsgemäß wieder gelöscht wird.
|
|
Code im Codebereich des Moduls |
|
|
Option Explicit
Private Declare Function GetTempFileName Lib "kernel32" Alias _
"GetTempFileNameA" (ByVal lpszPath As String, ByVal _
lpPrefixString As String, ByVal wUnique As Long, _
ByVal lpTempFileName As String) As Long
Private Declare Function GetTempPath Lib "kernel32" Alias _
"GetTempPathA" (ByVal strBufferLength As Long, ByVal _
lpBuffer As String) As Long
Public Function CreateTempFile(strPrefix As String) As String
Dim strBuffer As String
Dim nRetVal As Long
Dim lngPos As Long
Dim strTempDir As String
strTempDir = GetTempDir
strTempDir = strTempDir & _
IIf(Right$(strTempDir, 1) = "\", "", "\")
strBuffer = Space(255)
nRetVal = GetTempFileName( _
strTempDir, Left$(strPrefix, 3), 0&, strBuffer)
If nRetVal <> 0 Then
lngPos = InStr(strBuffer, Chr$(0))
If lngPos = 0 Then
CreateTempFile = strBuffer
Else
CreateTempFile = Left(strBuffer, lngPos - 1)
End If
End If
End Function
Function GetTempDir() As String
Dim strBuffer As String
Dim nRetVal As Long
Dim strPath As String
strBuffer = Space(255)
nRetVal = GetTempPath(255, strBuffer)
If nRetVal > 0 Then
strPath = Left$(strBuffer, nRetVal)
Else
strPath = CurDir$
End If
GetTempDir = strPath
End Function
|
|
|
|
|
|
Der hier abgebildete Code des Moduls funktioniert auch in einem VBA-Projekt, dieser muss dazu lediglich in den VB-Editor der entsprechenden Anwendung
kopiert oder aber die im Download enthaltene *.bas-Datei importiert werden. Ein Import der im Download enthaltenen *.frm-Datei ist
nicht möglich.
|
|
Windows-Version |
95 |
|
|
98 |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
VB-Version |
VBA 5 |
|
|
VBA 6 |
|
|
VB 4/16 |
|
|
VB 4/32 |
|
|
VB 5 |
|
|
VB 6 |
|
|
|
|
Download (3,8 kB)
|
Downloads bisher: [ 446 ]
|
|
|