Temporäre Dateien
 Info  
Von : Wolfgang Kluge
 Zusatz  
Printfreundliche Ansicht
Altbekanntest Problem.
Man braucht zwischendurch mal kurz eine Temporäre Datei. Nun sollte man Wissen, wie diese Datei heißt. Man sucht sich also einen Dateinamen aus, und prüft ob diese schon vorhanden ist(im Temp-Ordner), wenn ja, dann hat man die möglichkeit diese zu löschen, oder sich einen anderen Namen einfallen zu lassen. Erstere wird Problematisch, da diese Datei ja noch von einem anderen Programm in verwendung sein kann. Und da Windows ja ein Multitasking-Betriebssystem ist, liegt die Möglichkeit noch nicht einmal soweit von der Realität entfernt... Und die Zweite Möglichkeit ist wohl sehr umständlich (und mitunter auch langwierig).

Warum überlässt man solche Aufgaben nicht einfach dem MultiTasking-Betriebssystem daß schließlich damit umgehen muß? Gute Frage. Warum eigentlich nicht, denn so schwer ist das ja auch gar nicht.
Alles was man braucht ist eine Funktion, deren Name darauf schließen läßt, daß Windows die Aufgabe wirklich übernimmt.

 Deklaration:
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 nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Const MAX_PATH = 260


Tatsächlich erzeugt die Funktion GetTempFileName beim Aufruf schon eine Datei der Länge 0.

Es muß auch nicht das Temp - Verzeichnis sein, in der die Datei gespeichert wird. Man kann seine Temporären Dateien auch(wie zB auch VB) im eigenen Verzeichnis speichern.
Eines ist aber nicht gegeben. Gelöscht werden muß die Datei immer noch von "Hand".

Also geht mit gutem Beispiel voran...(nicht so wie einige große Software-Häuser*g*) und "Killt" die Datei, wenn Ihr Sie nicht mehr braucht...
' Erzeugen einer .tmp - Datei
' Das Prefix XYZ kann nach belieben vergeben werden..
Dim TempFileName As String * 256
GetTempFileName "C:\Temp", "XYZ", 0&, TempFileName
MsgBox TempFileName


Wenn man seine Temp-Dateien auch im eingestellten Temp-Verzeichnis haben möchte, dann kann man dieses Verzeichnis durch folgenden Aufruf rausbekommen.

' Pfad zum Temp-Verzeichnis auslesen
Dim TempPath As String * MAX_PATH
GetTempPath MAX_PATH, TempPath