Hi Thomas!
ich muss eine Datei binär aufbauen die normalerweise von einem
C++ Programm erstellt wird. Ich kenne die Dateistruktur, weiss
jedoch nicht wie ich das mit VB (Datentypen??) machen muss.
V1 (Unsigned Short)
V2 (Unsigned Char)
V3 (String)
Flag1 (Unsigned Short
Bit 1 gesetzt = Info 1
Bet 2 gesetzt = Info 2
Bit 3 gesetzt = Info 3
Bit 0 und 4-7 sind ungenutzt)
Wie schreibe ich diese Werte binär mit VB in eine Datei ??
Mir ist im Moment nicht ganz klar, worauf du hinaus willst.
Brauchst du die zu C vergleichbaren Datentypen? Oder geht es um die Bit-Anknipserei? Oder um das Schreiben von Werten in eine Binärdatei?
Den Unsigned Short gibt es in VB als Datentyp „Byte“ (8-bit-Wert ohne Vorzeichen).
Das Bit-Anknipsen in einer Variablen erfolgt ganz simpel über die Wert-Zuweisung des entsprechenden Bit-Musters.
Bsp.:
'Variable deklarieren
Dim Flag1 as Byte
Flag1 = 1
'führt zum Bitmuster 0-0-0-0-0-0-0-1
Flag1 = 2
'führt zum Bitmuster 0-0-0-0-0-0-1-0
Flag1 = 3
'führt zum Bitmuster 0-0-0-0-0-0-1-1
Flag1 = 129
'führt zum Bitmuster 1-0-0-0-0-0-0-1
Abfragen kann man die Bit-Stellen über den AND-Operator, in dem man die Bit-Wertigkeit angibt:
IF Flag1 AND 1 …
'Dies fragt ab, ob das rechte Bit geschaltet ist. Außer im Beispiel 2 ist das der Fall.
IF Flag1 AND 2 …
'Hier treffen die Fälle 2 und 3 zu
IF Flag1 AND 128 …
'Hier wird nur das linke Bit geprüft - siehe Beispiel 129
'Interessant ist, dass man auch mehrere Bits auf einmal prüfen kann:
Flag1 = 14
'Bitmuster 0-0-0-0-1-1-1-0
IF Flag1 AND 6 …
'Das gibt einen Treffer, weil der 2er- und 4er-Bit geschaltet sind.
Das alles hat aber mit VB nix zu tun - ist Uralt-Basic.
Geschrieben wird der Sermon in eine binäre Datei wie folgt:
'Öffnen der Datei für Binär-Zugriff
Dim iDateiNr as Integer
'freies Handle für Datei holen
iDateiNr = FreeFile
'Datei öffnen
Open „C:\TEST\DATEI.BIN“ FOR BINARY AS #iDateiNr
'Schreibe Variable Flag1 an Position 1 in Datei
Put #iDateiNr, 1, Flag1
'Datei schließen
Close iDateiNr
Damit ist DATEI.BIN genau 1 Byte groß.
Willst du mehr und hintereinander schreiben, musst du die Schreibposition hochzählen
Auch das ist Uralt-Basic und hat mit VB nix zu tun!
)
Hope It Helps!
Heinrich