ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 13.01.2000

Diese Seite wurde zuletzt aktualisiert am 13.01.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Zurück...


Anzeige

Von Jan Krumsiek mailto:jkrumsiek@aboutvb.de

Wie der Name es sagt: Temporäre Dateien sind vergänglich. Sie werden von Anwendungen vorübergehend angelegt, um verschiedene Daten, Zustände oder gerade in Bearbeitung befindliche Dokumente zwischenzuspeichern. Es ist zwar kein Muss, aber als allgemeine Übereinkunft gilt, einen im System als speziell für diesen Zweck deklarierten Ordner zur Ablage von temporären Dateien zu verwenden - den TEMP-Ordner. Windows stellt dazu sogar eine eigene API-Funktion bereit, über die Sie den Pfad dieses Ordners ermitteln können (Gesucht - Systemordner).

Wenn sie nun für ihr Programm eine temporäre Datei erzeugen wollen, brauchen sie natürlich einen eindeutigen Dateinamen. Schließlich legen ja auch andere Anwendungen im TEMP-Ordner ihre Dateien ab, so dass es leicht zu Namenskonflikten kommen könnte. Sie könnten natürlich einfach einen beliebigen Dateinamen wählen und für den Fall, dass eine Datei dieses Namens bereits existieren sollte (Sein oder nicht sein), in einer Schleife einen neuen Dateienamen kreieren, bis Sie einen freien gefunden haben. Doch besser ist wie immer der Weg, die speziell dafür bereitgestellte API-Funktion MSDN-Library - GetTempFileNameGetTempFileName zu verwenden. Der Funktion werden vier Parameter übergeben.

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

Im ersten Parameter, lpszPath übergeben Sie den Pfad, in dem die temporärer Dateiname angelegt werden soll, vorzugsweise den des TEMP-Ordners.

In lpPrefixString übergeben Sie einen aus bis zu drei Zeichen bestehenden Präfix, den Sie dem Dateinamen voranstellen möchten. Damit können Sie gewissermaßen eine "Duftmarke" Ihrer Anwendung darstellen. Sie können natürlich auch ganz trivial ein "tmp" übergeben.

Um den Parameter wUnique brauchen Sie sich nicht weiter zu kümmern. Hier könnten Sie Ihrer temporären Datei eine von Ihrer Anwendung selbst generierte und verwaltete Nummer geben. Übergeben Sie 0, erzeugt Windows selbst eine eindeutige Zahl anhand der Systemzeit.

Im Puffer lpTempFileName liefert Ihnen die Funktion den erzeugten Dateinamen zurück.

Die folgende Funktion CreateTempFile verpackt den Aufruf auf VB-gerechte und einfach handzuhabende Weise. Beide Parameter sind optional. Verzichten Sie auf den individuellen Präfix, wird "tmp" als Präfix verwendet. Lassen Sie die Pfadangabe weg, wird die Datei automatisch im TEMP-Ordner des Systems angelegt. Dazu wird hier die API-Funktion GetTempPath direkt aufgerufen (Gesucht Systemordner). Konnte aus irgendeinem Grund keine temporäre Datei angelegt werden, wird ein leerer String zurückgegeben.

Beachten Sie, dass der Aufruf der API-Funktion GetTempFileName auf jedem Fall eine Datei anlegt, die Sie nach Gebrauch oder Nichtgebrauch wieder ordnungsgemäß löschen sollten. Dieses Verhalten der API-Funktion ist sinnvoll, da nach einer reinen Ermittlung eines unverwendeten Dateinamens dieser doch schon nicht mehr frei sein könnte, wenn Sie selbst nur Sekunden später eine Datei dieses Namens anzulegen versuchten.

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 kLength = 255

Public Function CreateTempFile(Optional Prefix As String = "tmp", _
 Optional TempPath As String) As String
  Dim nBuffer As String
  Dim nReturn As Long
  Dim nPosEnd As Long
  Dim nTempPath As String
    
  If Len(TempPath) = 0 Then
    nBuffer = Space(kLength)
    nReturn = GetTempPath(kLength, nBuffer)
    If nReturn > 0 Then
      nTempPath = Left(nBuffer, nReturn)
    Else
      nTempPath = CurDir$
      If Right$(nTempPath, 1) <> "\" Then
        nTempPath = nTempPath & "\"
      End If
    End If
  Else
    nTempPath = TempPath
  End If
  nBuffer = Space(kLength)
  nReturn = GetTempFileName(nTempPath, Left$(Prefix, 3), 0&, _
   nBuffer)
  If nReturn <> 0 Then
    nPosEnd = InStr(nBuffer, Chr$(0))
    If nPosEnd = 0 Then
      CreateTempFile = nBuffer
    Else
      CreateTempFile = Left(nBuffer, nPosEnd - 1)
    End If
  End If
End Function

Temporäre Dateien mit eindeutigen Dateienamen legen Sie mit der Funktion CretateTempFile an


Moduls modCreateTempFile.bas (modCreateTempFile.bas - ca. 1,4 KB)






Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer