Das FileSystemObject aus der Microsoft Scripting Runtime erlaubt nur das Lesen und Schreiben von Text-Dateien. Beliebige binäre Dateien können Sie damit nicht lesen und schreiben. In Scripts, die im Windows Scripting Host (WSH) ausgeführt werden, mag der binäre Zugriff auf Dateien jedoch manchmal notwendig und sinnvoll sein. Die ActiveX-DLL avbVBSBinaryFile stellt das Objekt BinaryFile zur Verfügung. Dieses öffnet eine Datei im Binär-Modus wie in Visual Basic und stellt zur Bearbeitung den originalen Visual Basic-Anweisungen entsprechende Methoden zur Verfügung.
Der Methode OpenFile ( VB: Open) können Sie einen Dateipfad oder ein File-Objekt der Scripting Runtime übergeben. Dazu können Sie optional den Sperr-Modus angeben. Im optionalen Parameter ForceCreate geben Sie an, ob die Datei ausdrücklich angelegt werden soll, falls sie noch nicht existiert - anderenfalls würde der abfangbare Laufzeit-Fehler bfErrFileNotFound ausgelöst. Setzen Sie den weiteren optionalen Parameter OverWrite auf True, wird eine bereits vorhandene Datei gegebenenfalls überschrieben.
Public Enum bfLockConstants
lockNone ' 0
lockShared ' 1
lockReadWrite ' 2
lockRead ' 3
lockWrite ' 4
End Enum
Public Sub OpenFile(File As Variant, _
Optional ByVal LockMode As bfLockConstants, _
Optional ByVal ForceCreate As Boolean, _
Optional ByVal OverWrite As Boolean)
Die Eigenschaft File gibt die geöffnete Datei als File-Objekt zurück. Dieses wird auch dann instanziert, wenn Sie nur einen Dateipfad übergeben haben sollten. Den Pfad der Datei gibt die Eigenschaft Path wieder. Aus der Eigenschaft LockMode können Sie den Sperr-Modus auslesen. Sie können die Datei ausdrücklich über die Methode CloseFile schließen. Sie wird aber auch automatisch geschlossen, wenn Sie die Objekt-Variable, der Sie die Referenz auf das BinaryFile-Objekt zugewiesen haben, auf Nothing setzen oder wenn das Script beendet wird.
Über die Methode PutData ( VB: Put) schreiben Sie Daten in die Datei. Da Sie in VBScript keine Variablen eines bestimmten Datentyps deklarieren können, werden die zu schreibenden Werte und Daten als Variant-Wert im Parameter Value übergeben. In der Voreinstellung des Parameters VType als Variant-Datentyp werden die Werte tatsächlich auch als Variant-Daten in die Datei geschrieben. Geben Sie jedoch einen spezifischen Datentyp an (Konstanten-Enumeration bfVarTypeConstants), wird der entsprechende Datentyp auch tatsächlich geschrieben - mit einer Ausnahme: Arrays werden grundsätzlich als Variant-Datentyp geschrieben. Im optionalen Parameter Position können Sie schließlich noch die exakte Byte-Position festlegen, an der geschrieben wird.
Public Sub PutData(Value As Variant, _
Optional ByVal Position As Long = -1, _
Optional ByVal VType As bfVarTypeConstants = vtVariant)
Public Enum bfVarTypeConstants
vtInteger = vbInteger ' 2
vtLong = vbLong ' 3
vtSingle = vbSingle ' 4
vtDouble = vbDouble ' 5
vtCurrency = vbCurrency ' 6
vtDate = vbDate ' 7
vtString = vbString ' 8
vtBoolean = vbBoolean ' 11
vtVariant = vbVariant ' 12
vtByte = vbByte ' 17
End Enum
Die Methode GetData ( VB: Get) liest Daten aus der Datei und gibt sie als Rückgabewert zurück. Auch hier geben Sie können Sie wieder entweder Variant-Daten (Voreinstellung) oder jeden anderen Datentyp lesen. Geben Sie den Datentyp vtString an, müssen Sie im optionalen Parameter Length die Anzahl der zu lesenden Zeichen angeben. Lassen Sie die Angabe weg, wird ein String in der Länge der gesamten Datei eingelesen. Die Leseposition können Sie im optionalen Parameter Position angeben.
Public Function GetData(Optional ByVal Position As Long = -1, _
Optional ByVal VType As bfVarTypeConstants = vtVariant, _
Optional ByVal Length As Long) As Variant
Der Positionszeiger wird automatisch nachgeführt und jeweils hinter die zuletzt geschriebenen bzw. gelesenen Daten gesetzt. Geben Sie bei PutData oder GetData keine ausdrückliche Position an, wird an dieser letzten Position geschrieben bzw. gelesen. Mit der Methode SeekPos ( VB: Seek) können Sie den Positionszeiger auch gezielt versetzen.
Public Sub SeekPos(ByVal Position As Long)
Nähere Einzelheiten zu den hinter den Methoden stehenden originalen VB-Anweisungen finden Sie in der MSDN-Bibliothek ( Online). Die beiden Beispielprojekte für die Visual Basic-Versionen 5 und 6 enthalten jeweils eine VBS-Scriptdatei zur Demonstration der Verwendung des BinaryFile-Objekts. Je nach dem, welche der beiden Visual Basic-Runtime-Datei-Versionen Sie verwenden möchten, können Sie ein Setup herunterladen und installieren. Beide Setups enthalten allerdings keine Runtime-Dateien. Auf den meisten Systemen ist jedoch die Visual Basic 5-Runtime bereits vorhanden (seit Windows 98 bzw. IE 4).
|