VB-Homepage Tipp 327 |
Temp. Dateinamen über API zuweisen / Temp.verz. ermitteln |
Schauen Sie auch von Zeit zu Zeit immer mal in Ihr Temp
Verzeichnis und wundern oder ärgern sich über die Vielzahl der temporären Dateien die
dort herumliegen und die gar nicht mehr temporär sind, da das Programm , das diese angelegt hat, sie durch irgendein Ereignis (System-, Programmabsturz oder schlechte Programmierung) vergessen hat wieder zu löschen. Wie Sie das vermeiden können, kann ich Ihnen auch nicht sagen. Mir geht es in diesem Tipp um etwas anderes. Schauen Sie sich die Namenskonvention der meißten Temp Dateien mal etwas genauer an und Sie werden feststellen, die sehen in etwa gleich aus. Das kann kein Zufall sein und genau so ist es auch. Selbst für den Zweck der Auslagerung von temporären Daten oder Programminformationen zur Laufzeit in eine Temp Datei gibt es API-Funktionen. GetTempFileName zum erzeugen eines Dateinamens für eine temp. Datei. Dabei können Sie für Ihre Tempdateien die ersten drei Zeichen vorgeben. Sie sollten dabei als erstes Zeichen ein ~ nutzen, dies werden Sie bei den meisten Tempdateien vorfinden, die anderen beiden Zeichen bleiben Ihnen zur freien Auswahl. Die Funktion bastelt dann noch 4 Zeichen und die Endung *.tmp an Ihre temporäre Datei und gewährleistet damit die Eindeutigkeit des Namens. Bitte denken Sie aber an das Löschen der Dateien zum Programmende, sonst ärgern sich Ihre Anwender über volle Temp.Verzeichnisse. GetTempPath zum ermitteln des Pfades des Temp. Verzeichnisses. Wichtig für das ablegen der Tempdateien ins Tempverzeichnis ist der Pfad dorthin. Aber auch sonst, kann es notwendig sein, den Pfad zum Temp.Verzeichnis zu kennen. Insofern ist diese API Funktion nicht an die erste gebunden. Demoprojekt Auf einer Form plazieren Sie zwei Commandbutton (Command1 & Command2), der eine wird nur das Temp.Verzeichnis ermitteln und der andere eine temporäre Datei anlegen und Ihnen den Namen mitteilen. Command1.Caption = "Temp.Verzeichnis" Command2.Caption = "Temp.Datei" Unter strBuffer = String$(MAX_PATH, 0) If lngRet = 0 Then MsgBox Left$(strBuffer, lngRet) strBuffer = String$(MAX_PATH, 0) 'kein Temp.Verz strTempPath = Left$(strBuffer, lngRet) 'Datei konnte nicht erstellt werden lngRet = InStr(1, strBuffer, Chr(0)) If lngRet > 0 Then MsgBox GetTempFile 'wir wollen doch keinen Müll erzeugen, also Temp.Datei
wieder löschen Starten Sie Ihr Projekt mit F5 und testen Sie die Funktionen. |
Tipp-Download |
Quelle : sebastian.strand@pp.inet.fi / http://personal.inet.fi/cool/dragon/vb |