alte mit VB6 geschriebene Binärdatei mit VB.NET auslesen

14/10/2007 - 16:35 von Jens Gerber | Report spam
Hallo NG,

ich suche seit gestern Nachmittag und komme einfach nicht weiter.

In einer alten VB6 Applikation werden Daten binàr in eine Datei geschrieben.
Das ganze sieht da so aus.

Public Type Datensatz
Kennung As Integer
Satz As String
End Type

Public TestSub SchreibeDaten
Dim DSatz As Datensatz
Dim f as Integer
f = Freefile
Open (Datei) For Binary As f

DSatz.Satz = "12345"
DSatz.Kennung = 1
Put f, , DSatz

DSatz.Satz = "678910"
DSatz.Kennung = 2
Put f, , DSatz

'usw.

Close #f
End Sub

Die einzelnen Datensàtze haben keine feste Lànge.
In VB6 habe mittels Get auf die Datensàtze (DSatz.Kennung)
zugreifen können.

Ich habe es mir mal mit dem Konverter von VB6 nach VB.NET konvertieren
lassen. Dabei kommt das raus.

FileOpen(f,datei,OpenMode.Binary)
Do while not EOF(f)
FileGetObject(f,DSatz)
Loop

Das funktioniert aber nicht.

Sàmtliche Tests mit FileGet funktionieren ebenfalls nicht.
Wie auch dies. Hier kommt immer "" oder Null als Ausgabe.

f = vb.FreeFile()
Dim Textzeile as Datensatz
Dim buffer As ValueType = Textzeile
Dim j As Integer
FileOpen(f, datei, OpenMode.Random, OpenAccess.Read, OpenShare.Shared)
Do While Not EOF(f)
j += 1
FileGet(f, buffer, j)
Textzeile = CType(buffer, Datensatz)
MsgBox(Textzeile.Satz)
Loop
FileClose(f)

Es wàre schön wenn mir jemand auf die Sprünge helfen könnte.
Eventuell mit einem kleinen Beispiel.

Vielen Dank
Gruß
Jens
 

Lesen sie die antworten

#1 Jens Gerber
14/10/2007 - 20:39 | Warnen spam
Hallo Zusammen,

ich habe mir jetzt erst mal so geholfen die Datei per VB6 ActiveX DLL
einzulesen. Das gefàllt mir zwar nicht so sehr aber es ist eh nur eine
Übergangslösung
bis alle Anwender mit der neuen Application arbeiten.

Gruß
Jens


"Jens Gerber" schrieb im Newsbeitrag
news:
Hallo NG,

ich suche seit gestern Nachmittag und komme einfach nicht weiter.

In einer alten VB6 Applikation werden Daten binàr in eine Datei
geschrieben.
Das ganze sieht da so aus.

Public Type Datensatz
Kennung As Integer
Satz As String
End Type

Public TestSub SchreibeDaten
Dim DSatz As Datensatz
Dim f as Integer
f = Freefile
Open (Datei) For Binary As f

DSatz.Satz = "12345"
DSatz.Kennung = 1
Put f, , DSatz

DSatz.Satz = "678910"
DSatz.Kennung = 2
Put f, , DSatz

'usw.

Close #f
End Sub

Die einzelnen Datensàtze haben keine feste Lànge.
In VB6 habe mittels Get auf die Datensàtze (DSatz.Kennung)
zugreifen können.

Ich habe es mir mal mit dem Konverter von VB6 nach VB.NET konvertieren
lassen. Dabei kommt das raus.

FileOpen(f,datei,OpenMode.Binary)
Do while not EOF(f)
FileGetObject(f,DSatz)
Loop

Das funktioniert aber nicht.

Sàmtliche Tests mit FileGet funktionieren ebenfalls nicht.
Wie auch dies. Hier kommt immer "" oder Null als Ausgabe.

f = vb.FreeFile()
Dim Textzeile as Datensatz
Dim buffer As ValueType = Textzeile
Dim j As Integer
FileOpen(f, datei, OpenMode.Random, OpenAccess.Read, OpenShare.Shared)
Do While Not EOF(f)
j += 1
FileGet(f, buffer, j)
Textzeile = CType(buffer, Datensatz)
MsgBox(Textzeile.Satz)
Loop
FileClose(f)

Es wàre schön wenn mir jemand auf die Sprünge helfen könnte.
Eventuell mit einem kleinen Beispiel.

Vielen Dank
Gruß
Jens





Ähnliche fragen