Lesen von Random-Dateien

03/09/2008 - 19:04 von Astrid | Report spam
Hallo,
ich soll nun von VB6 auf VB.Net umstellen. Dabei bin ich auf das Problem mit
dem Lesen von Random-dateien gestoßen.
Habe schon einiges ausprobiert.
Kann mir Jemand mal einen Tipp geben, wie ich das in VB.Net am besten machen
kann.
Folgendes habe ich gefunden, dass jemand schon ausprobiert hat in verkürzter
Form.

Dim fs As New IO.FileStream("C:\Daten"), IO.FileMode.Open)
Dim BinStream As New IO.BinaryReader(fs)
Dim byt(8) As Byte
Dim clsDaten As Datensatz
If BinStream.BaseStream.CanRead Then
BinStream.BaseStream.Position = i * 128
clsDaten .dtdatum = Date.FromOADate(BinStream.ReadDouble)
byt = BinStream.ReadBytes(8)
clsDaten .cBetrag = Decimal.FromOACurrency(BitConverter.ToInt64(byt, 0))
BinStream.ReadDouble()
clsDaten.yStatus = BinStream.ReadByte
clsDaten.sKzn =
Encoding.GetEncoding(850).GetStringBinStream.ReadBytes(1)).Trim
clsDaten.lNr = BinStream.ReadInt32
clsdaten.dtML = Date.FromOADate(BinStream.ReadDouble)
End If
BinStream.Close()
fs.Close()

Die Struktur hat 23 Positionen. Die String-variablen sind Strings fester
Lànge.
Gibt es da nicht etwas eleganteres? Für einen Datensatz mag es ja gehen,
aber wenn es tausende sind, müssen diese erst so konvertiert werden.
Dann die nàchste Frage:
Um die Daten an andere Anwendungen weiterzugeben, könnte ich ja ein Dataset
füllen. Aber es kommt mir alles so schwerfàllig vor. Ich habe Bedenken, dass
das Lesen ziemlich lange dauern wird.
In VB6 habe ich die Daten der Reihe nach durch Get - befehl gelesen und
dann über die Type-Struktur in ein ungebundenes ADODB-Recordset gespeichert
und dann an alle Anwendungen weitergegeben.

Gruß
AR
 

Lesen sie die antworten

#1 Peter Fleischer
03/09/2008 - 19:21 | Warnen spam
"Astrid" schrieb im Newsbeitrag
news:

Die Struktur hat 23 Positionen. Die String-variablen sind Strings fester
Lànge.
Gibt es da nicht etwas eleganteres? ...



Lies die Daten eines "Datensatzes" in eine Struktur:

[vb]
Public Structure Kunde
Dim Id As Short
Dim PrüfDatum As Integer
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=6)> Dim Titel As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:P)> Dim Auftraggeber As
String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:P)> Dim Telefon As
String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:P)> Dim Straße As String
Dim HausNr As Short
Dim PLZ As Integer
End Structure

Public Function GetRecord(ByVal Aktuelle_Datei As String, ByVal DS_Nr As
Long) As Kunde
Dim Kunden As Kunde
Dim FileNum As Integer

FileNum = FreeFile()
FileOpen(FileNum, Aktuelle_Datei, OpenMode.Random, OpenAccess.Default,
OpenShare.Default, Len(Kunden))
FileGet(FileNum, Kunden, DS_Nr)
FileClose(FileNum)
Return Kunden
End Function
[/vb]


Viele Gruesse

Peter

Ähnliche fragen